有人告诉我这个代码对XSS LEAK开放......我尝试使用Google搜索并没有显示太多信息,除了如何执行泄漏的方法。
我的问题是,如果我不使用htmlspecialchars()
,我真正可以解释的是,有人可以将$_POST[]
变量编辑为<?=$db_password?>
...我认为PHP是在服务器,所以我认为这不会起作用,对吧?他们真正做到的是对下面的代码有害吗?
我使用预准备语句将这些值插入MySQL。
<form method="POST" action="">
<input type="hidden" name="id" value="<?=$_POST['id']?>"/>
<input type="hidden" name="name" value="<?=$_POST['name']?>"/>
<input type="hidden" name="ordernum" value="<?=$_POST['ordernum']?>"/>
<?php
for ($i = 1; $i <= $_POST['ordernum']; $i++){
echo '<input type="hidden" name="line'.$i.'" value="'.$_POST['line'.$i].'" />';
}
?>
</form>
答案 0 :(得分:0)
是的,这是一个安全问题的开放闸门:你按原样输出$ _POST数据。
至少htmlspecialchars()
,更有可能strip_tags()
,您放入字段属性中的任何内容。但即便如此,你仍然不安全。一些肮脏的输入的彩色样本可能潜在那里:
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
要解决这些问题,您需要使用以下过滤库: