Php 对url$\u GET提交中xss攻击的担忧

Php 对url$\u GET提交中xss攻击的担忧,php,xss,Php,Xss,嗯。上周我遭受了竞争对手论坛的XSS攻击和SQL注入 1) 我意识到我没有在register.php页面中的一个小ajax函数中使用一个准备好的语句(我使用PDO),该函数用于检索用户是否存在。。。现在已修复,它是user=“$user”`……直接的……好的 2) 我根本没有使用CSRF令牌,现在我已经将CSRF令牌放在所有使用结构 3) 我现在使用htmlentities()输出 4) 我验证输入 我想知道下一个 我是否需要清理页面URL中使用的每个$\u GET[“”], 页码和数字按钮的名

嗯。上周我遭受了竞争对手论坛的XSS攻击和SQL注入

1) 我意识到我没有在register.php页面中的一个小ajax函数中使用一个准备好的语句(我使用PDO),该函数用于检索用户是否存在。。。现在已修复,它是
user=
“$user”`……直接的……好的

2) 我根本没有使用CSRF令牌,现在我已经将CSRF令牌放在所有使用结构

3) 我现在使用
htmlentities()输出

4) 我验证输入

我想知道下一个

我是否需要清理页面URL中使用的每个$\u GET[“”], 页码和数字按钮的名称
p=$\u GET[“page”]
他们没有访问数据库的权限,他们只是用于分页的
$\u GET
,但我已经读到,如果我有一个
$\u GET
打开且未初始化,我可能容易受到XSS的攻击


请告诉我,我需要知道,以避免过度关注xss的漏洞,或者知道对那些
$\u GET
实施卫生措施是否不重要,谢谢你。

xss发生在用户试图在web上输入“某物”时。我认为您使用的步骤是正确的,但是为了更安全,也许您应该使用函数验证每个$\u 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']):'';

    ?>


您可以根据需要更改正则表达式

您不应该清理输入,而应该清理输出,因此我需要清理分页数字中使用的每个
$\u GET
的所有输出?关于他们没有访问数据库的权限?为什么只获取以及为什么只分页?$\u在页面中获取URL是我的站点中最常见的$\u获取。我需要知道我是否需要清理它们很难说。如果您可以绝对确定,即使GET(或POST/PUT/…)参数中最恶意的值也不会导致任何严重的后果,那么您可以省略清理。但是(什么时候)你真的能做到?将来自客户机的任何数据视为可能不好的数据,并对其进行清理/检查数据类型、长度和正确性是一种很好的做法……好的,谢谢。如果我将其作为
INT
使用会怎么样?因为它们是唯一的号码,不客气。您可以将正则表达式更改为$regex=“/[^0-9]/”;好的,谢谢,但是为什么我需要验证仅仅是结构化的并且没有链接到数据库的$\u GET?