首先,自动漏洞扫描器不能给出保证。所以你不能相信他们的结果。我将很快解释您必须做什么来保护您的 PHP 应用程序。
1.使用 PDO 代替原生 MySQL 库。
为了保护您的应用程序免受 SQL 注入漏洞的侵害,这是最严重的 Web 应用程序漏洞之一,您必须使用 PDO。例如,
不要这样做。
<?php
$cal = $_GET["calories"];
mysql_query('SELECT name, colour, calories
FROM fruit
WHERE calories < '.$cal);
?>
这样做。
<?php
$calories = $_GET['calcalories'];
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->execute();
?>
2。对您将在客户端浏览器上打印的每个变量进行编码
这是预防XSS的关键。您应该在向浏览器回显/打印变量之前使用编码方法!有 3 种 XSS 漏洞。第一个是反射型 XSS,第二个是存储型 XSS,最后一个是基于 Dom 的 XSS。请阅读以下链接以了解什么是 XSS 以及如何保护您的应用程序免受 XSS 漏洞的影响。 https://www.owasp.org/index.php/Cross-site_Scripting_(XSS) .尝试解释其中三个将需要两三页!所以我会跳过这部分。
3。不安全的直接对象引用
取决于 Web 应用程序,此漏洞可能是最危险的一个。因为这与 PHP 或代码语法无关。此漏洞的出现是因为应用程序设计失败和代码解剖。例如;
www.gsmfirm.com/invoice/1337 -> It's your invoice for January!
www.gsmfirm.com/invoice/1338 -> It belongs to someone else!
请阅读以下链接。我相信你会明白什么是 IDOR 以及它会导致什么。 http://avsecurity.in/2013/06/nokia-insecure-direct-object-reference/
4. PHP 对象注入漏洞
简短说明,不要使用 serialize() 函数。使用 json_encode 代替。如果您将查看以下链接。您可以清楚地了解什么是对象注入漏洞。 https://www.owasp.org/index.php/PHP_Object_Injection
5. CSRF
跨站请求伪造也很危险。基本上你必须确定“这个请求是用户故意发送的吗?”为了确保这一点,您必须为每个用户生成唯一密钥并将其存储在会话中,并且您必须将其用作 html 标签内的隐藏 html 输入。然后您将为每个表单请求检查该值。 “和stored一样吗?”如果不是,则说明请求不是客户端故意发送的。
6.身份验证和会话管理损坏
基本上,有两种类型的漏洞。 会话固定和会话预测。
为了防止 Session Fixation,您必须在成功登录后重新生成会话密钥。此外,您必须使用 HTTP Header Cookie 参数来携带会话密钥,而不是 GET 参数。
会话预测是会话密钥生成算法的弱点。使用复杂的密钥生成方法来生成不可预知的密钥。请不要尝试开发自己的生成或加密算法。
PS:由于声誉点,我不能发布超过 2 个链接。对此感到抱歉。