2013-08-16 32 views
0

我見過只要在瀏覽器的地址欄中輸入某些sql行就可以進入網站的sql數據庫。這甚至有可能嗎?不應該地址欄只重定向我們的網站?那個地址欄怎麼可以接受sql語法?我對瀏覽器本身非常熟悉,但令我着迷的是地址欄提供了漏洞。「手動」SQL注入 - 它是如何工作的?

回答

1

你打算對這個問題的答案是好的還是邪惡的?

在任何情況下,假設你在表單

http://mysite.com/dosomething?email= $ EMAIL

有一個URL和你有一些代碼,執行查詢,看起來像這樣:

SELECT fieldlist 
FROM table 
WHERE field = '$EMAIL'; 

然後this page解釋了某人如何操作EMAIL的內容以執行基本上任意的查詢:

+0

僅供教育之用,不用擔心。謝謝您的回答! –

4

這怎麼可能?

應用程序正在執行從URL中讀取任意SQL。認爲http://example.com/search.php?query=SELECT%20...

不宜地址欄只有我們重定向到網站?

這正是它在做什麼。該漏洞位於該網站對該URL的處理中。

怎麼這麼地址欄可以接受的SQL語法?

SQL查詢是文本,這是一個URL的一部分。地址欄不知道(或關心)你的URL包含SQL。

+0

我同意。如果SQL數據可以通過GET參數進行更改,則在這裏播放時會遇到更大的問題。大多數SQL注入攻擊甚至在應用程序級別都沒有發生,除非這些perps是業餘愛好者。 – FredTheWebGuy

+0

有趣的答案,謝謝! –

1

SQL注入是代碼注入技術,用來攻擊驅動的應用程序的數據,其中惡意的SQL語句被插入到一個輸入字段以供執行(例如轉儲數據庫內容給攻擊者)。例如,假設您有一個textField接收一個值,然後將該值分配給變量username,然後您有一個statement接收該值,並將該值連接到代表您的查詢的字符串,如下所示:

statement = "SELECT * FROM users WHERE name = '" + userName + "';" 

讓我們說,要傳遞它的價值的東西這樣' or '1'='1這個例子可以用來強制有效的用戶名的選擇,因爲「1」 =「1」的評價總是正確的。這只是一個例子!查詢this網站以瞭解更多關於它的信息