我对SQL注入安全吗?

时间:2011-05-13 09:48:20

标签: php mysql sql sql-injection

我正在使用一个简单的cms作为我的网站的后端,我可以更新新闻等。我希望从SQL注入安全,所以我想知道这段代码是否被认为是安全的,或者我是否可以做些什么来使它更安全:

if($_POST) {
    if(isset($_POST['title']) and (isset($_POST['content']) and     ($_POST['added']))) {
        $title = "'".mysql_real_escape_string($_POST['title'])."'";
        $content = "'".mysql_real_escape_string($_POST['content'])."'";
        $added = "'".mysql_real_escape_string($_POST['added'])."'";

        if(isset($_POST['id']) && $_POST['id']!=''){
            $result = mysql_query("UPDATE news SET title = ".$title.",     added =".$added.", content = ".$content."  WHERE id = ".$_POST['id']);
            $msg = "News Updated Successfully";
        }else{
            $result = mysql_query("INSERT INTO news (title, content, added) values($title, $content, $added)") or die("err0r");
            $msg = "News Added Successfully";
        }
    }

谢谢,祝你有个美好的一天!

3 个答案:

答案 0 :(得分:9)

您没有清理$_POST['id']

如果ID不是整数(假设ID是intval()字段),请对其执行int或(更好)拒绝处理。

if (!is_numeric($_POST['id'])
 die ("Invalid ID");

答案 1 :(得分:3)

你应该做的一件事就是确保ID是整数(可能需要):

$id = (int)$_POST['id'];

答案 2 :(得分:2)

  

如果我能做些什么来让它更安全

是的,您可以将PDO接口与预准备语句一起使用,以便查询与数据(稍后绑定)分开构建,并且无法进行任何注入。