2012-04-10 7 views
1

ユーザーの入力に基づいてユーザーを登録するスクリプトがあります。これは、準備されたステートメントとホワイトリストを使用してSQLインジェクションを防止します。しかし、私はXSSの予防を理解するのに苦労しています。htmlを出力しない場合はhtmlspecialcharsが必要ですか?

ページからHTMLを出力している場合は、XSSを防止する必要があります。これは何を意味するのでしょうか???

私はウェブページにHTMLを出力しないので、この登録ページでは適用されないと思いますか?そうですか?

XSSを防止する場合、htmlspecialcharsを使用しますか?

答えて

3

のような一般的に正しいですかhtmlspecialcharsを使用したい(ユーザープロファイル情報のような)検索と表示。

ユーザー登録を行うときに入力フィールドに正しい値を入力できなかった場合は、入力した値でページを再表示します。この場合、htmlspecialcharsでエンコードしています。

いつでもDBからの情報をプロファイルなどで説明したようにWebページに再表示する予定がある場合は、htmlspecialcharsを使用する必要があります。

私はいつも言う転ばぬ先の杖 - 決して信頼ユーザの入力

+1

後で表示するためにデータを挿入する場合は、後で時間が表示されるようにするために、「htmlspecialchars」を使用する方がよいでしょう。 – Jon

0

基本的に、XSSはユーザーの入力を消毒してWebページに表示するときに発生します。例えば

:ユーザの入力テキストボックスに

<script>alert('hello you are hacked');</script> 

、そしてこの突然

Hello, <script>alert('hello you are hacked');</script> 
になってます

Hello, $username 

のように登録された後、あなたのウェブページにこれを示します

これはXSSの形式の1つです


あなたはどんな返された値は、ページ上に表示されない場合は、またはあなたが後でデータベースに情報を挿入する場合XSSを防ぐためにeffiecient方法の一つは、この

echo htmlspecialchars($varname, ENT_QUOTES, 'UTF-8'); 
0

私が理解から、あなたが ページにHTMLを出力している場合は、あなただけのXSSを防ぐために必要ですか?これは何を意味するのでしょうか???

(つまりHTMLは特別に敵対的な利用者によって細工し、供給した際に明らかにして)それがそうすることを意味しなかったとき、XSS攻撃がクライアントにサーバー出力するHTML(実際には、Javascriptの)によって行われます。 。

私は がウェブページにHTMLを出力していないため、この登録ページでは適用されません。そうですか?

ユーザ入力からのものをに出力していない場合は、安全です。

XSSを防止する場合は、htmlspecialcharsを使用しますか?

はい、これで十分です。

関連する問題