我使用一个简单的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"; } }
谢谢,祝你有美好的一天!
您没有在消毒 $_POST['id']。
$_POST['id']
做一个intval()就可以了,或(更好)拒绝共处理如果ID不是整数(假设ID是一个int字段)。
intval()
int
if (!is_numeric($_POST['id']) die ("Invalid ID");