アドレスバーでJSが動いてしまう脆弱性対処法
javascriptで値を渡すときに、htmlにencodeしていないとjsが動いてしまう。
<script type="text/javascript"> var product_id = function gotopay(){"<?php echo $_GET['product_id']; ?>"; document.payform.action="https://aaa/shopping/products?id="+product_id+"; document.payform.submit(); } </script>
となっている場合、
$_GET['product_id'] はエンコードしなければいけない。
<script type="text/javascript"> var product_id = function gotopay(){"<?php echo htmlspecialchars($_GET['product_id']); ?>"; document.payform.action="https://aaa/shopping/products?id="+product_id+"; document.payform.submit(); } </script>
この場合、
formのvalueもちゃんとエンコードする。
<form> <input type="hidden" value="<?php echo htmlspecialchars($_GET['product_id']); ?>" name="product_id"> </form>