12

XSS攻撃からアプリケーションを保護するためにHTMLPurifierを使用しています。現在、ユーザーがXHTMLマークアップを使用できる唯一の場所であるため、WYSIWYGエディターからコンテンツを精製しています。

私の質問は、ログイン認証システムのユーザー名とパスワード(または電子メール、名前、アドレスなどのサインアップページの入力フィールド)にもHTMLPurifierを使用する必要があるかどうかです。そこにXSS攻撃の可能性はありますか?

4

4 に答える 4

13

ページに表示される可能性のあるものはすべて浄化する必要があります。XSS攻撃では、ハッカーが<script>他のサイトにリンクする可能性のあるタグやその他の悪意のあるタグを挿入するためです。

パスワードと電子メールは問題ないはずです。パスワードは決して表示されるべきではなく、電子メールには、パスワードが適切な形式であることを確認するための独自のバリデーターが必要です。

最後に、コンテンツにhtmlentities()を入れることを常に忘れないでください。

ああ..そしてfilter_varも見てください。変数をフィルタリングする非常に優れた方法。

于 2009-07-31T00:09:04.797 に答える
3

XSSリスクは、あるユーザー入力したデータが他のユーザーに表示される可能性がある場合に存在します。このデータが現在表示できない場合でも、これを行う必要がないと想定しないでください。

ユーザー名とパスワードに関する限り、パスワードを表示したり、表示可能な形式で保存したりしないでください(つまり、でパスワードを入力しますsha1())。ユーザー名については、などの有効な文字に制限を設けて[A-Za-z0-9_]ください。最後に、他の回答が示唆しているように、予約済みまたは特殊なhtml文字を含む可能性のある入力データには、言語のhtmlエンティティエンコーディング関数を使用します。これにより、このデータが表示時に構文エラーを引き起こすのを防ぎます。

于 2009-07-31T00:10:24.763 に答える
1

いいえ、ログイン認証時にユーザー名とパスワードに HTMLPurifier を使用しません。私のアプリケーションでは、英数字のユーザー名と入力検証フィルターを使用し、それらを ENT_QUOTES の htmlspecialchars で表示します。これは非常に効果的で、HTMLpurifier よりもはるかに高速です。英数字文字列を使用した XSS 攻撃はまだ見たことがありません。とにかく、英数字コンテンツをフィルタリングする場合、ところでHTMLPurifierは役に立たないため、入力文字列を英数字フィルターに強制すると、HTMLpurifierで表示する意味がありません。パスワードに関しては、そもそも誰にも表示されるべきではなく、XSS の可能性を排除します。

于 2016-01-04T19:58:00.390 に答える