Webサイトで、ユーザーがテキストを入力してから、ユーザーが入力した内容を表示するページを入力できるフォームがある場合。スクリプト攻撃を防ぐために、ユーザーが入力した値をhtmlエンコードすることを知っています。フォームが電子メールアドレスを送信している場合、私は同じことをすると思いますが、電子メールに特別なケースはありますか?電子メールクライアントは電子メールに挿入されたスクリプトを実行しますか?
5 に答える
ドキュメントを送信する前にタグを削除するのは良い考え<script>
ですが、脅威は低いと思います。電子メールをレンダリングする前にスクリプトを削除しない電子メール クライアント (まだサポートを受けている) を見つけるのは難しいと思います。
電子メールの本文をtext/plainとしてマークすることで、javascriptやhtmlの攻撃を回避できると思います(ただし、ヘッダーの提案に従うことについての見通しは信用できません)。
投稿されたコンテンツを電子メールの HTML 本文に割り当てる前に、必ず HTML エンコードする必要があります。あなたのコードは、電子メールの場合だけでなく、すべての場合において、'<script>' などのコンテンツを無効として既に拒否しているはずです。
他に心配する必要がある考慮事項はありません。
エスケープの重複または欠落によって引き起こされる負担 (および潜在的なバグ) を受け入れる SMTP ライブラリを使用する必要があります。次に、平文メール (text/plain) のみを使用します。
バグのあるメール クライアントでのセキュリティ上の問題を回避するために、ほとんど空のメールを送信し、テキストを添付ファイル (ファイル拡張子 ".txt"、コンテンツ タイプ "text/plain") として送信することもできます。
メールを送信するために、既存のテスト済みのソリューションを使用することを強くお勧めします。たとえば、ユーザー入力を PHP の mail() 関数に渡す場合 (たとえ HTML エンコーディングを使用していても)、攻撃者が実際にヘッダーを含む「本文」を作成して、マルチパート メッセージを作成する可能性があります。