ログインしたばかりのユーザーのユーザー名をエコーアウトするための次のコードがあります。
echo $_SESSION['user']['username']."
コードを次のように変更した場合、私は正しいと思いますか?
echo htmlspecialchars $_SESSION['user']['username']."
少なくとも低レベルのXSSから身を守っていますか?
これは、ユーザー名を出力する場所によって異なります。htmlタグの間にある場合は、はい。html属性にある場合は、属性によって異なります。OWASPXSS防止に関するチートシートを参照してください。
関数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);