提交后重新填写表单,无需操作代码

时间:2017-02-02 13:42:50

标签: php html forms security html-manipulation

通常我正在使用这样的代码来表单。其中的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?

这是一个很大的安全问题吗?

防止这种情况的最佳方法是什么?仅搜索删除>"等特殊字符就足够了吗?还是有更好,更优雅的方式?

1 个答案:

答案 0 :(得分:0)

是的,这是一个严重的问题。这是一次XSS攻击。攻击者可以通过这种方式注入恶意脚本。 https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

为了避免这种攻击,您应该转义HTML标记。这是一个PHP库:http://php.net/manual/en/function.htmlspecialchars.php