一尘不染

我可以避免SQL注入吗?

sql

我使用一个简单的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";
        }
    }

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


阅读 148

收藏
2021-03-08

共1个答案

一尘不染

您没有在消毒 $_POST['id']

做一个intval()就可以了,或(更好)拒绝共处理如果ID不是整数(假设ID是一个int字段)。

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