今日、phpで作成されたjavascript配列を持ち、phpのaddslashes()のみを使用してサニタイズするコードに出くわしました。最初は、これは簡単な XSS の脆弱性だと思っていましたが、これが欠陥であることは確認できていません。これが私が話していることの例です:
foo.php
$itemList = "[";
foreach ($array as $item)
{
$itemList .= "'".addslashes($item)."',";
}
$itemList = "'']";
bar.html
<script>
var a = <?php echo $itemList; ?>
</script>
のようなもの']; alert("xss"); b=['
は、 に変換されるため、明らかに効果がありません\']; alert(\"xss\"); b=[\'
。それで、これは本当に安全で、私のコードの匂いは存在しませんか?
`
`
編集:
誰かがこれがどのように機能しないかを教えてもらえますか? これがベストプラクティスではないことはわかっており、自分のコードでは使用しませんが、コードを書き直したい場合は、他の人を納得させる証拠が必要です