Php 提交后重新填写表单,但不能操作代码

Php 提交后重新填写表单,但不能操作代码,php,html,forms,security,html-manipulation,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 ty

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

>
一个安全工具刚刚告诉我,黑客可以操纵我的代码,如果填写例如
“>你好!!!

然后提交。黑客也可以操纵PHP代码还是只操纵HTML

这是一个大的安全问题吗


防止这种情况发生的最佳方法是什么?只需搜索一个删除特殊字符(如
)就足够了吗?还是有更好、更优雅的方式?

是的,这是一个严重的问题。这是一次XSS攻击。攻击者可以通过这种方式注入恶意脚本


为了避免此类攻击,您应该转义HTML标记。这里有一个PHP库可以实现这一点:

谢谢。在等待这个问题的答案时,我有一个想法:
我不是PHP专家,但我猜您正试图以这种方式删除标记。如果它适合您的场景,这不是一个坏主意,但是使用库可能是一个更好的解决方案,以防您遗漏了某些内容(例如,库还包含代码中未包含的“&”符号)。