php - 对 url $_GET 提交中的 xss 攻击的担忧
问题描述
好的。上周我遭受了竞争对手论坛的 XSS 攻击和 SQL 注入......
1)我意识到我没有在 register.php 页面的一个小 ajax 函数中使用准备好的语句(我使用 PDO),它检索用户是否存在......现在修复了,它是user=
“$user”`.. ..直接...好的。
2) 我根本没有使用 CSRF 令牌,现在我已将 csrf 令牌放入所有使用该结构的提交表单中<form></form>
3)我现在输出htmlentities()
4)我验证输入
我想知道下一个
我是否需要清理页面 url 中使用的每个 $_GET[""] 分页数字按钮?p=$_GET["page"]
他们无权访问数据库,它们仅$_GET
用于分页,但我读过,如果我有一个$_GET
开放且未经处理的...
拜托,我需要知道以避免过度担心 xss 的漏洞,或者知道实施这些漏洞是否$_GET
不重要,谢谢。
解决方案
当用户尝试在网络上输入“某物”时,就会发生 xss。我认为您使用的步骤是正确的,但是为了更安全,也许您应该使用函数验证每个 $ _GET 输入,也许像这样
<?php
function xss_clean($inputs = ''){
$regex = "/[^a-zA-Z0-9]/";
$inputs = preg_replace($regex, "", $inputs);
return $inputs;
}
//For Example
$some_input = isset($_GET['username'])?xss_clean($_GET['username']):'';
?>
您可以根据需要更改正则表达式
推荐阅读
- javascript - 在 vscode 调试器中查看导入的变量时遇到问题 - Javascript 和反应
- javascript - Discord js v13频道过滤器不起作用
- python - highcharts 不是 Ipython 中的函数
- reactjs - 在 GET 请求开始之前等待 POST 请求完成(React/Node)
- r - R中,一个关于正则表达式的问题 -stringr package (str_remove_all)
- sql - 使用 AbstractCube.sql() 在扩展多维数据集中未定义的安全上下文。CubeJS
- .net - 尝试将 Microsoft 的身份验证数据库作为 Azure SQL 访问时出现 .NET Core 错误
- jquery - $(...).fancyTable 不是函数
- python-3.x - 如何使用闭包来装饰带有标题的数据?
- python-3.x - 在 django 中使用简单 JWT 时无法验证电子邮件