php - 提交后重新填写表单而无法操作代码

标签 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?

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

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

最佳答案

是的,这是一个严重的问题。这是一种 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/

相关文章:

php - 使 apache 别名指向 trucrypt 容器中的文件夹

javascript - 在 angularjs 中使用 ng-repeat 的表内表

java - 使用 Java (Netbeans) 中的另一个表单中的数据填充一个表单

javascript - 在 jQuery 表单提交中传递名称

php - 亚马逊 MWS Scratchpad API

php - 奇怪的 PHP 字符串整数比较和转换

php - 连接mysql时出错

JavaScript - 类切换正在删除类而不是在下次单击时添加

html - 试图在我的页面的中心对齐 html 按钮

python-3.x - Python + Mechanize - 使用 POST 模拟 Javascript 按钮单击?