2014-01-26 74 views
0

我最近一直在查詢SQL注入,它們是什麼,它們是什麼以及如何阻止它們。大多數地方討論用戶存儲在用戶選擇的雄蕊中的用戶名,導致諸如「OR 1」的問題,但如果我只是使用自動遞增的ID從數據庫中選擇信息而不是用戶輸入值,這也會阻止sql注入?SQL注入自動增量

+1

如果您沒有使用任何用戶輸入,那麼別人無法注入任何SQL。在你的問題中,這在實踐中有多麼有用。 – 2014-01-26 01:10:41

回答

1

SQL Injection特別適用於形狀的查詢 - 它沒有提到任何有關可能意外泄漏其他方式的信息的查詢。

SQL注入是代碼注入技術,用來攻擊數據驅動的應用程序,其中惡意的SQL語句[或表達式]被插入以用於執行一個輸入字段..

使用佔位符消除了SQL注入

但..

..只是因爲系統是免費的SQL注入並不意味着它是安全的其他漏洞

例如,想象這個查詢,其中@OWNER表示佔位符。

select * 
from emails 
where owner = @OWNER 

該查詢是SQL注入免費,但如果攻擊者可以指定任意「所有者」的值,那麼他們可以訪問別人的電子郵件 - 哎呀!這只是一個安全漏洞;不是SQL注入。


使用佔位符是來自變量的所有數據。

無論是否來自用戶都無所謂。如果該值保證是整數(即使是自動增量列中的一個),也無關緊要。只需持續使用佔位符 - 那麼您就可以獲得更清晰的查詢,並有更多時間專注於其他問題。

0

每個正在查詢SQL注入的人都必須明白沒有辦法利用不存在的注入。另一方面,一旦注射成爲可能,潛在的可能會有無限次數的潛在漏洞利用

意味着人們不應該關心特定的漏洞。但總是專注於使注射不可能。