JavaScript でスクリプトの実行を停止するにはどうすればよいですか? クロスサイト スクリプティング (XSS) 攻撃の場合、基本的な要件は、インジェクションとスクリプトの実行です。
攻撃者がページにJavaScript を挿入できるシナリオを想像してみてください。私たちの目標は、攻撃者のスクリプトの実行を阻止することです。例としての注入ポイントは、ユーザーが指定した任意の入力領域にすることができます。
JavaScript でスクリプトの実行を停止するにはどうすればよいですか? クロスサイト スクリプティング (XSS) 攻撃の場合、基本的な要件は、インジェクションとスクリプトの実行です。
攻撃者がページにJavaScript を挿入できるシナリオを想像してみてください。私たちの目標は、攻撃者のスクリプトの実行を阻止することです。例としての注入ポイントは、ユーザーが指定した任意の入力領域にすることができます。
唯一の解決策は、スクリプトが挿入されないようにすることです。これを達成するためにできることがいくつかあります。
render
ますrender_unsafe
。Rails は 3.0 以降同様のインターフェイスを備えており、サニタイズされていないレンダリングを特に要求しない限り、すべてのテンプレート データがサニタイズされます。明確な名前のインターフェイスを使用すると、テンプレートをチェックしやすくなり、サニタイズされていないレンダリングが例外であることを確認して、テンプレートにデータをダンプするたびに決定を下す必要があります.XSS を扱う際には、基本的に次の 2 つの点に注意する必要があります。
eval()
。常に入力をエスケープしてください。XSS の場合、htmlentities() を使用して HTML と JS をエスケープします。これはPHPセキュリティに関する良い記事です
他の人が言ったように、XSS から身を守るための最善かつ最も簡単な方法は、入力を検証し、挿入ポイントに応じて出力を適切にエスケープすることです (HTML、エンティティまたは JavaScript / CSS ブロックを使用する可能性が最も高く、適切にエスケープすることはほとんどなく、より困難です)。
ただし、ユースケースが任意の HTML を含むと想定される生のユーザー入力を出力していて、挿入された JavaScript がサイトを台無しにするのを防ぎたいだけの場合は、次のいずれかを実行できます。
1) コンテンツを別の一意のドメイン (メイン ドキュメントと Cookie を共有できないようにするため) にフレーム化します。たとえば、xyz123.usercontent.com (xyz123 はユーザーごとに異なります) 2) および/または CSP のサンドボックス ディレクティブが標準化されるのを待ちます。サポートするすべてのブラウザーで (もちろん、対応していないブラウザーへのアクセスを拒否します)。