1

JavaScript でスクリプトの実行を停止するにはどうすればよいですか? クロスサイト スクリプティング (XSS) 攻撃の場合、基本的な要件は、インジェクションとスクリプトの実行です。

攻撃者がページにJavaScript を挿入できるシナリオを想像してみてください。私たちの目標は、攻撃者のスクリプトの実行を阻止することです。例としての注入ポイントは、ユーザーが指定した任意の入力領域にすることができます。

4

4 に答える 4

0

唯一の解決策は、スクリプトが挿入されないようにすることです。これを達成するためにできることがいくつかあります。

  1. ユーザーからの入力を決して信頼しないでください。これは、フォーム入力、クエリ文字列パラメーター、Cookie コンテンツ、または着信要求から取得したその他のデータを意味します。
  2. レンダリングするあらゆる場所で、レンダリングするすべてのものをサニタイズします。私は、テンプレート内の 2 つの明確な名前のレンダリング関数を使用してこれを実現したいと考えていrenderますrender_unsafe。Rails は 3.0 以降同様のインターフェイスを備えており、サニタイズされていないレンダリングを特に要求しない限り、すべてのテンプレート データがサニタイズされます。明確な名前のインターフェイスを使用すると、テンプレートをチェックしやすくなり、サニタイズされていないレンダリングが例外であることを確認して、テンプレートにデータをダンプするたびに決定を下す必要があります.
  3. ユーザーが関数を直接実行できるようにする必要がある場合は、常にホワイトリストを使用して実行してください。関数名またはその他の識別子を文字列として指定し、引数を JSON またはその他の解析可能な構造として指定します。同様の実行セーフ ホワイトリスト パターンを使用するShopify のLiquidテンプレート システムの設計をご覧ください。
  4. ユーザーからの入力を信用しないでください。決して。
于 2012-06-07T08:58:30.317 に答える
0

XSS を扱う際には、基本的に次の 2 つの点に注意する必要があります。

  1. 出力をエスケープします。入力をエスケープすると、無駄に多くのリソースが必要になります。ユーザーが送信したコンテンツ出力をエスケープします。また、エスケープされていないコンテンツがデータベースにあることも意味します。これは良いことです (誤検知の場合、コンテンツを失うことなく修正できます。新しい XSS ポリシーの場合、すべてのデータベースを変更する必要はありません。等)。
  2. JavaScript コードを保護します。使用上の欠陥などを含めないように十分注意してくださいeval()
于 2012-06-07T07:02:05.790 に答える
0

常に入力をエスケープしてください。XSS の場合、htmlentities() を使用して HTML と JS をエスケープします。これはPHPセキュリティに関する良い記事です

http://www.phpfreaks.com/tutorial/php-security

于 2012-06-07T06:48:41.960 に答える
0

他の人が言ったように、XSS から身を守るための最善かつ最も簡単な方法は、入力を検証し、挿入ポイントに応じて出力を適切にエスケープすることです (HTML、エンティティまたは JavaScript / CSS ブロックを使用する可能性が最も高く、適切にエスケープすることはほとんどなく、より困難です)。

ただし、ユースケースが任意の HTML を含むと想定される生のユーザー入力を出力していて、挿入された JavaScript がサイトを台無しにするのを防ぎたいだけの場合は、次のいずれかを実行できます。

1) コンテンツを別の一意のドメイン (メイン ドキュメントと Cookie を共有できないようにするため) にフレーム化します。たとえば、xyz123.usercontent.com (xyz123 はユーザーごとに異なります) 2) および/または CSP のサンドボックス ディレクティブが標準化されるのを待ちます。サポートするすべてのブラウザーで (もちろん、対応していないブラウザーへのアクセスを拒否します)。

于 2012-06-07T08:15:08.887 に答える