2016-11-16 13 views
1

私は現在、自分のウェブサイトを過労にしており、これまでのところこの問題を抱えていたため、正しい文字エンコーディングを使用したいと考えています。UTF8文字エンコーディング、htmlentities、クロスサイトスクリプティング

マイHTMLやPHPファイルはUTF8でエンコードされている、私のHTMLヘッドは次のようになります。

<!DOCTYPE html><html><head><meta charset="utf-8" />..... 

私はMySQLiをを使用して、このような私の接続を設定した:

$DB->set_charset("utf8"); 

私のデータベースはutf8_general_ciを使用しています照合。

私はすべてを正しく設定していると思います。

今私の問題: クロスサイトスクリプティングを回避するために、私everytimesが(にhtmlentitiesを使用)データを表示する際に、ユーザが<のようなHTML文字を打破するために、私のデータベースに保存されています>「「

echo(htmlentities($str, ENT_QUOTES, "UTF-8")); 

しかし、以下のように...

どこに私のせいでXSSと表示に対する安全性を達成するための正しい方法は何ですか;?彼らはまた壊れて取得し、私のブラウザのみだけ& Aumlを表示SSAE $ strのはÄäÖöÜü&のような他の特殊文字が含まれていますutf-8文字ですか?私はこれらのトピックの中で完全なクラッシュコースが必要なのではないかと思う。 This solutionは既にこのパラメータを使用しているため、私の問題と一致しません。

この問題で私を助けることができれば非常に感謝します。 よろしくお願いします。 ルーカス

+0

ロケールに問題はありますか?あなたのPHPプロセスのロケールをUTF8のロケールに設定した場合、どうすればいいでしょうか? –

+0

お返事ありがとうございます!私のphp.ini内のdefault_charset設定を意味しますか?私はそれを "UTF-8"に設定しましたが、何の効果もありませんでした... htmlentitiesが私にとって正しい機能であるかどうかは本当に分かりません(http://php.net/manual/en/function)。 htmlentities.php)? 「すべての該当する文字」を意味しますか? – lukasl1991

答えて

0

htmlspecialcharsに切り替えてこの問題を解決できました。私はこの機能がxssに対するセキュリティに十分であると考えています。

+0

XSSは、ブラックリストベースのhtmlエンコーディング( 'htmlspecialchars()'のように)をはるかに上回っていることに注意してください。 –

+0

あなたの心の中でXSSに対処するには十分ですか? – lukasl1991

関連する問題