这是不安全的SQL注入

时间:2014-03-20 15:42:05

标签: php sql security sql-injection

所以这是我与之合作的第一个项目,我使用预先构建的CMS,并且我试图确保提交的数据是安全的。

我的问题分为两部分:a)我检查$ _POST值的方式是否足够安全?这是:

function validateInput($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;   
}

$id = validateInput($_POST['id']);
$name = validateInput($_POST['name']);
$address = validateInput($_POST['address']);

b)如果没有,我怎样才能使它更安全,更不可能被SQL注入?

我真的很感激这方面的一些帮助。谢谢你们

2 个答案:

答案 0 :(得分:0)

你所做的是一个很好的开始,不要让任何人告诉你不要逃避特殊角色。

官方的答案是使用现代的mysql方法:mysqli或PDO

请谷歌那些PHP:mysqli和php:PDO

有关于这些的很好的文档。

不推荐使用任何mysql_escape _...。

还有一点需要注意:stripslashes不会添加任何安全值。

答案 1 :(得分:0)

使用mysqli准备变量:

$id = mysqli_real_escape_string($db, $_POST['id']);
$name = mysqli_real_escape_string($db, $_POST['name']);
$address = mysqli_real_escape_string($db, $_POST['address']);

或者使用数据库对象(在打开连接时定义):

$id = $db->real_escape_string($_POST['id']);
$name = $db->real_escape_string($_POST['name']);
$address = $db->real_escape_string($_POST['address']);

http://dk1.php.net/mysqli_real_escape_string