0

我正在创建一个函数,它将检查一个字符串(一旦通过该函数发送字符串)以了解 SQLI 和 XSS 攻击中使用的常见语法;问题是,我只知道一些.. 但不是全部,所以我想知道这里的人是否能够给我一些关于这些类型攻击的常见用途的信息/语法。

我的代码如下:

function CleanInput ($Arg)
{
    foreach (array("@", "<", ">", "'", "|", "/", "\\", "-", "+", "-", "_", "'") as $value)
    {
        $check = strpos($Arg, $value);
        if ($check !== false)
        {
            return true;
        }
    }
    return false;
}
4

1 回答 1

1

输入本身并不是“干净”或“不干净”的。像对待它一样对待它(就像你在这里所做的那样)是解决奇怪的功能问题和安全漏洞的捷径。

相反,请始终牢记发送数据的位置(无论是否是用户输入!),并确保以适合输出的方式修改数据。例如:

  • 向 SQL 发送数据时,尽可能使用绑定参数。如果不是,请在将数据插入查询之前应用 SQL 转义。
  • htmlspecialchars()输出 HTML 时,在您的数据与其他 HTML 组合的位置使用适当的 HTML 转义函数(如)。
  • 生成 JSON 时,使用json_encode(). 没有例外。
  • 创建 shell 命令时,使用 shell 转义函数来包含非常量数据。

一般来说:在输出上转义数据,而不是在输入上。

于 2013-01-18T01:50:28.867 回答