提交后重新填写表单而无法操作代码
Refill form after submit without able to manipulate the code
通常我使用这样的代码来处理表单。其中的 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 攻击。攻击者可以通过这种方式注入恶意脚本。 https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
为了避免这种攻击,您应该转义 HTML 标签。这是一个执行此操作的 PHP 库:http://php.net/manual/en/function.htmlspecialchars.php
通常我使用这样的代码来处理表单。其中的 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 攻击。攻击者可以通过这种方式注入恶意脚本。 https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
为了避免这种攻击,您应该转义 HTML 标签。这是一个执行此操作的 PHP 库:http://php.net/manual/en/function.htmlspecialchars.php