php - 我可以免受 SQL 注入(inject)攻击吗?

标签 php mysql sql sql-injection

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

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']

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

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

关于php - 我可以免受 SQL 注入(inject)攻击吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5990100/

相关文章:

mysql - 带排序的 SQL 查询

php - PK和FK表设计的混淆

PHP - 如何访问深层数组的内容,动态构建它的路径

php - 对 2 列中的所有行求和并使用 select 显示两列

php - 通过 MySQL 的全日历动态事件颜色

mysql - 使用 Select 子句插入 Nodejs 查询字符串

mysql - 我可以创建一个 MYSQL select 语句,其中的列包含在另一个 select 语句中吗?

sql - 选择未包含在集合中的下一个日期

mysql - 作为 MySQL root 用户 : how to switch to other user without password

php - 将整个数据库变成 RESTful API