不使用htmlspecialchars时XSS泄漏

时间:2013-11-26 20:23:55

标签: php xss

有人告诉我这个代码对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>

1 个答案:

答案 0 :(得分:0)

是的,这是一个安全问题的开放闸门:你按原样输出$ _POST数据。

至少htmlspecialchars(),更有可能strip_tags(),您放入字段属性中的任何内容。但即便如此,你仍然不安全。一些肮脏的输入的彩色样本可能潜在那里:

https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

要解决这些问题,您需要使用以下过滤库:

http://htmlpurifier.org/comparison