我有這樣一行:SQL注入:這行是否安全?
$sql = "UPDATE votes SET up=up+1 WHERE id='{$p}'";
現在從我讀過的SQL注入的一種方式是通過不「收」的SQL查詢正確,它允許黑客添加額外的信息造成的。
所以我的問題是,這條線對我來說是安全的up=up+1
還沒有「封閉」,但如果我把它設置爲這樣up='up+1'
這讓我「關閉」它不起作用。
排隊類型是int(11)
如果這有什麼區別。
更新:
$p
被消毒與函數
function sanitize($foo) {
if(get_magic_quotes_gpc() == true) {
$foo = stripslashes($foo);
}
return mysql_real_escape_string(htmlspecialchars($foo));
}
這個聲明對我來說看起來很安全,除非你只需要確保$ p在這個聲明之前總是數字。 –
千萬不要消毒。逃逸。消毒取決於你是否知道每一種可能的攻擊途徑和專門針對它的過濾。任何時候發現新的攻擊途徑,你的功能都是沒用的。轉義處理所有攻擊。 –
如果您擔心SQL注入攻擊,那麼您應該通過存儲過程和視圖來限制數據庫訪問。也就是說,特定的查詢看起來非常安全,特別是因爲$ p被函數檢查。 –