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:希望将这些 UNION 合并在一起

php - 使用 Bootstrap 4 水平居中动态 div.card

python - Django 原始查询 : Making Count query with group BY clause

php - 为什么我可以在不声明类对象的情况下调用非静态函数?

php - 如何在使用sql创建另一个sql后立即获取主键

mysql - 遇到 SQL 错误 1111 的问题

c# - 如何在 EF Core 中按条件获取最新条目?

php - 检查数据库中现有条目的 SQL 查询不起作用

PHP switch case $_GET 变量和 switch case $_GET 变量值

java.sql.Time 对象与 java.sql.Date 对象混淆