2012-12-08 34 views
0

可能重複:
How to prevent SQL injection?所有輸入字段都容易受到sql注入的影響嗎?

這更多的是一種哲學觀點我試圖確定,出於好奇的。

我知道理論上任何密碼或加密都是可以破解的。

但是,SQL注入是否也是如此,其中只需找到適當的措施來處理/繞過網站中實施的任何安全措施?還是注入了一些可以明確而確定地防範使用一套固定安全措施的東西?

我基本上想知道是否有可能在我的網站輸入字段通過注入unhackable,或者是否總是會有一些漏洞?

+0

理論上,散列不能確定性地反轉,因爲它不是從鍵到散列的一對一映射。但你可以經常猜出什麼是正確的關鍵。 –

+2

它真的沒有什麼特別與「輸入字段」,這只是*一個*可能的攻擊向量。 –

回答

2

SQL注入容易受到攻擊。一個構建良好的應用程序不會包含這樣的錯誤,並且沒有任何努力會使這樣的錯誤出現。

1

SQL注入意味着輸入的數據符合有效的SQL(儘管通常以創造性的方式注入以產生不希望的結果)。

爲了防止它發生,您只需確保用戶提供的任何數據都以不會被濫用的方式進行編碼。

正如上面的鏈接(How can I prevent SQL injection in PHP?)中所述,使用預準備語句是防止SQL注入的最佳實踐。

0

Sql注入是一種用來劫持網站安全的技術。

當輸入字段中指定的數據未針對轉義字符進行過濾並傳遞到sql查詢中執行時,會發生Sql注入。

對於測試sql注入請參考以下網址。 http://sqlzoo.net/hack/

在上述網址嘗試在字段中指定 「 「的名稱,並指定」 OR 1 = 1#「 在現場密碼

所以最終的查詢將會

 SELECT * from user where name='' OR 1=1#' and password=''; 

在上面的例子中,您可以注意到在輸入字段中指定了上述數據後,查詢中斷,並且任何匿名用戶都可以輕鬆登錄網站。

有幾種技術可以防止sql注入。

(1)輸入數據必須使用mysql_real_escape_string進行過濾,同時傳遞到sql查詢中執行。

有關mysql_real_escape_string函數的更多詳細信息,請參閱下面的url中提到的文檔。 http://php.net/manual/en/function.mysql-real-escape-string.php

相關問題