通常我对表单使用这样的代码。其中的 PHP 代码用于重新填写表格,例如如果缺少某些东西:
<form action="" method="post">
<input type="text" name="first_name" <?php if (isset($_POST['first_name'])) { echo "value=\"".$_POST['first_name']."\"";} ?>><br>
<input type="text" name="last_name" <?php if (isset($_POST['last_name'])) { echo "value=\"".$_POST['last_name']."\"";} ?>><br>
<input type="submit" name="submit">
</form>
一个安全工具刚刚告诉我,如果填写例如,黑客可以操纵我的代码。 "><p>Hello!!!</p>
然后提交。黑客是否也可以操纵 PHP 代码或仅操纵 HTML?
这是一个很大的安全问题吗?
防止这种情况的最佳方法是什么?仅搜索并删除像 >
这样的特殊字符就足够了吗?和 "
?还是有更好、更优雅的方式?
最佳答案
是的,这是一个严重的问题。这是一种 XSS 攻击。攻击者可以通过这种方式注入(inject)恶意脚本。 https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
为了避免这种攻击,您应该对 HTML 标签进行转义。这是执行此操作的 PHP 库:http://php.net/manual/en/function.htmlspecialchars.php
关于php - 提交后重新填写表单而无法操作代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42003785/