攻擊者經過構造惡意SQL命令發送到數據庫,若是程序未對用戶輸入的 SQL命令執行判斷過濾,那麼生成的SQL語句可能會繞過安全性檢查,插入其餘用於修改後端數據庫的語句,並可能執行系統命令,從而對系統形成危害sql
例如刪除 id 爲 1 的帖子,sql 以下:數據庫
1 $post_id = $_POST['post_id']; 2 3 $sql = "DELETE FROM posts WHERE user_id = 1 AND id = $post_id"; 4 5 \DB::statement($sql);
若是有人在提交 post_id 時輸入 1 OR 1 ,你的語句會組合成這樣:後端
$sql = "DELETE FROM posts WHERE user_id = 1 AND id = 1 OR 1";
通常比較常出如今原生的 SQL 操做,框架通常會解決這方面的問題。一般採用參數控制或過濾特殊字符避免上述的問題。安全