【发布时间】:2014-03-22 10:26:27
【问题描述】:
我有一个旧系统,没有对 sql 注入进行任何检查,我想在每次用户使用数据库时添加 mysqli_real_escape_string()。
所有的系统都建立在 index.php 下。页面如下所示:
if (!isset($_GET['p'])) {
$_GET['p'] = 'main';
}
if (!file_exists($_GET['p'].".php")) {
echo "The page you are looking for isn't exist.";
} else {
if (logs()) {
include($_GET['p'].".php");
}
else {
include('not_register.php');
}
}
我只想在顶部添加这段代码哦index.php,我想确保我没有搞砸任何事情,所以我在这里问。
foreach ($_POST as $name => $val) {
$_POST[$name] = mysqli_real_escape_string($db, $val);
}
这段代码每次重新加载页面都会产生负面影响吗?
谢谢。
【问题讨论】:
-
您的代码容易受到代码注入的影响,请阅读此处ultsec.com/php-code-injection-attack.php
-
您的代码可能容易受到remote file inclusion的攻击。
-
据我所知
file_exists()仅适用于同一服务器上的文件我错了吗?它如何容易受到代码注入的影响?我没有用foreach循环修复它吗? -
@OfirH 有wrappers 也支持
stat功能,例如ftp或ssh。 -
我可以修复它并将当前包含保存在
index.php中吗?或者我将不得不停止使用index.php作为主页?
标签: php mysqli mysql-real-escape-string