ブロックから保護するためのサイトの設計

みなさんこんにちは! 州による不合理なブロックを含むブロックの成長により、アイデアの説明と特定のパスとドメイン名によるブロックから保護されているサイトの設定のプロトタイプが注目されます。 保護をブロックするためのアイデア:









他の投稿で概説されます。 話題を気にする人は、猫の下に行きます。







リンク



https://github.com/http-abs/http-abs/







アイデアの説明



保護の原則は、各ユーザーが個々の(サブ)ドメインから一意のペアと、サイトを表示するためのパスプレフィックスを受け取ることです。 このペアをエージェント識別子と呼びます







注1

何らかの理由で管理できるサブドメインのセットが限られている場合、ユーザーはもちろん他のユーザーとサブドメインを共有します。







これはどのようにブロッキングから保護しますか?





注2

もちろん、上記の制限の場合、サブドメインをロックオペレーターと共有することができなかったユーザーにとっては、生活がより困難になります。 しかし、それほどではありません。









注3

前のメモに従ってください。









しかし、リンクを共有する方法は?



簡単です。 サイトを表示するためにユーザーに割り当てられたエージェント識別子は、ユーザーのCookieに保存されます。 ユーザーは、アドレスバーからリンクを共有するだけです。









クッキーを保存する理由



オペレーターロックを分離します。 運がよければ、数回ロックした後でも識別できます。







これはユーザーの生活を複雑にしますか?



文字通り、彼には何も必要ありません。 彼は通常の方法でサイトを訪れ、資料を読み、リンクを共有します。 彼の人生では、アドレスバーの外観のみが変わります。







これはサーバー開発者の生活を複雑にしますか?



おそらく。 エージェント識別子に含まれるパスプレフィックスとサブドメインを考慮する必要はありません。これらは、着信URLの処理の最初の段階でハンドラーによって切断されます。 ただし、プロセスを完全に透過的にするためには、一生懸命働く必要があります。







ロックオペレーターは断熱材をバイパスできますか?



もちろん。 しかし、ルールがさらに複雑なルールに変更される可能性があるという事実にもかかわらず、複雑なルールによって形成されるマテリアルへの無限のリンクをブロックする必要性を証明することは、彼にとってはるかに困難です。







オペレーターは、アスタリスクとIPアドレスですべてを単純にブロックします



このようなイベントの展開は除外されませんが、別の記事でこれらのケースを個別に検討したいと思います。 おそらく一緒に、コメントに追加の何かを思い付くでしょう。







実装



建築



プロセスを可能な限り透過的にするために、コードはnginx



フロントエンドサーバーに集中しています。 これにより、実質的に制限なしに、さまざまなアプリケーションサーバーを保護できます。







リクエストの処理は非常に重要なので、追加のパッケージlibnginx-mod-http-lua



を使用しました。これは、nginxでリクエストを処理するプロセスでlua



言語を実装します。







追加条件



理想的には、バックエンド(アップリンク、アプリケーションサーバー)が保護下にあるかどうかについてまったく気にしないように処理を行う必要があります。 彼はリクエストをURLで受け取り、そこからエージェント識別子のすべての要素が削除されます(そのような純粋なURLを呼び出しましょう)。 返されたページをやり直さないために、エージェントID Cookieが設定されたクリーンなURLをクリックすると、個々のURLにリダイレクトされます。







フロントエンドは、エージェント識別子Cookieを除き、状態を保存しません。







ブラウザにはJavaScriptコードの行は含まれていません。 HTTPプロトコルのみが使用されます。







アルファ実装の制限



実際、概念実証のみが実装されているため、アルゴリズムの実際の動作を観察できます。 製品のパッケージングに関連する多くの部品が決定されていません:モジュール性、パラメーターの分離と検証など。







サブドメインの場合、追加のDNSサーバーをインストールせずに、 hosts



と組み合わせて使用​​するのに適した、固定されたサブドメインのセットを持つスキームが選択されます。







パスプレフィックス形式は事前定義されており、16進数で32桁です。







インストールされた起動オプション



これまでのところ、起動パラメーターはコード内で設定されています。







サブドメインのセット(a、b、c)は変数に設定され、拡張できます。







ドメインはexample.com



として設定されexample.com









バックエンドは、 http://127.0.0.1:8000の時点で期待されています







結論



突然の妨害の脅威が高まり、事前に準備し、完全に忠実なサイトの所有者でさえもそれらから保護する方法を発明しなければなりません。 このような保護は非常に可能であり、ユーザー側でのジェスチャーを必要とせず、サイト管理者がかなりの労力で実装できます。








All Articles