2014-03-27 59 views
0

爲了防止SQL注入我的網站,我使用了準備好的語句。SQL注入無需用戶直接輸入

現在比方說,我在我的代碼的地方使用,一個簡單的SQL查詢是這樣的:

SELECT DATA FROM DATABLE; 

這段代碼容易注入?那麼在我看來,這是不可能的,因爲沒有用戶的輸入。但我只是想確定。

+1

呃,沒有用戶可以修改該文字語句。 –

+1

我會說1)它不容易注入,因爲沒有參數注入和2)我不認爲這個查詢將無論如何工作 – Andrew

+0

@AlexK。感謝您的回覆! Andrew:當然這個查詢會起作用!!如果你已經在你的數據庫中存儲了一些數據,並想從它那裏檢索所有的數據! –

回答

5

如果您的聲明是固定的(沒有外部參數),那麼它不受注射影響。

所以,如果你的代碼看起來是這樣的:

result = RunQuery("SELECT * FROM Table") 

那麼你是安全的,因爲查詢將始終相同每次並且不能被用戶所影響。

0

注入只有在您的查詢中使用變量時纔有可能。

如果使用帶參數的預準備語句不可能。

select * from user where id = ? 

你不能改變這個查詢,僅值,在這種情況下,你只會得到任何結果

如果使用

select * from user where id = '$id' 

現在依賴於$ ID,我們可以價值有一個SQL注入。 如果$ id將爲「0」或id> 0「,您將全程登錄;)