0

ログインしたばかりのユーザーのユーザー名をエコーアウトするための次のコードがあります。

echo $_SESSION['user']['username']."

コードを次のように変更した場合、私は正しいと思いますか?

echo htmlspecialchars $_SESSION['user']['username']."

少なくとも低レベルのXSSから身を守っていますか?

4

2 に答える 2

3

これは、ユーザー名を出力する場所によって異なります。htmlタグの間にある場合は、はい。html属性にある場合は、属性によって異なります。OWASPXSS防止に関するチートシートを参照してください。

于 2012-04-12T04:52:21.400 に答える
1

関数htmlspecialcharsは、デフォルトでは単一引用符(')をエンコードしません。ユーザー名が、html属性またはjavascript内にエコーする場合、XSSがあります。

例えば:

<script>
name='$YOUR_NAME_HERE$';
</script>

ユーザー名を';alert(' xss'); //に設定すると、ブラウザは次のようなhtmlコンテンツを生成します。

<script>
name='';alert('xss');//';
</script>

そして、あなたへの私のアドバイスは次のとおりです。

echo htmlspecialchars($_SESSION['user']['username'], ENT_QUOTES);
于 2012-04-12T08:31:29.313 に答える