2013-05-10 103 views
-1

我正在收緊我應用程序的安全性,我打算做的第一件事是通過SSL提供整個應用程序。我想知道如果這是我採取的唯一措施來保護應用程序,這是多麼安全。僅SSL是否阻止SQL注入?

舉例來說,假設我有以下前端代碼:

<input id="password" value="my_password_value" /> 
<script> 
    $(document).ready(function(){ 
     $('#password').blur(function(){ 
      location.href = 'my_backend_script.php?password=' + $('#password').val(); 
     }); 
    }); 
</script> 

然後在我的後臺腳本我有:

$user_ID = 1; 
$password = $_GET['password']; 
$USER_edit = mysql_query("UPDATE USERS SET password='$password' WHERE id='$user_ID'"); 

如果上面的例子中的SSL下運行連接,它會從任何SQL注入攻擊安全嗎?

注: 我意識到,準備語句是防止注入攻擊的標準,而最佳實踐將實施,但我只是好奇,如何安全的SSL是作爲一個獨立的解決方案。

快速回答: 不,SSL會什麼防止SQL注入攻擊。請參閱下面的接受答案。

回答

4

不,不是真的。 SQL注入與連接的安全無關,而是與你如何處理用戶輸入的安全性有關。使用預準備語句有助於防止錯誤形成的輸入數據破壞SQL查詢。

如果您的所有用戶都是必須登錄的可信用戶,那麼使用SSL可以提供一定程度的SQL注入安全性,因爲您會更加確信進入應用程序的用戶不會試圖破解您的系統。

但SSL不能替代正確編寫數據庫訪問代碼。

+2

這是相當「不,根本不」。 :) – Gumbo 2013-05-10 20:25:33

+0

謝謝@JeffOlson,這正是我需要的答案。 – AJB 2013-05-10 20:26:45

+0

然後隨意接受答案。 – 2013-05-10 20:35:12

4

SSL只確保客戶端和服務器之間的傳輸通道。但客戶端仍然可以通過該安全通道發送惡意數據。

2

SSL根本無法防範SQL注入攻擊。準備好的語句,視圖等是SQL注入的解決方案。

2

當我讀到這個問題時,腦海裏浮現出一個問題:注入發生在哪裏?

這是一個注入流氓SQL的中間人還是註冊用戶?
使用SSL將確保(在相當程度上)MITM不能將流氓數據(包括SQL)潛入我的數據包中。

那麼,爲什麼這麼多人說SQL注入與SSL完全無關?
我認爲,使用SSL可以在很大程度上解決許多攻擊。

例如,考慮現有的應用程序中,這是不可行的申請SQL注入真正的解決方案之一:說,預處理語句,因爲代碼改動,這將導致量

你能做些什麼來輕鬆地爲你的應用程序實現更好的安全性?
正如@JeffOlson所提到的,如果您的用戶需要登錄,並且一旦登錄後您信任他們,那麼SSL就是一個足夠的解決方案(用於SQL注入和其他一些攻擊)。

儘管您似乎已經同意SSL不針對SQL注入完全對於應用程序。

+0

優秀點@brainOverflow。現在我對注入攻擊的發生有了更好的瞭解,我開始看到兩者之間的關係比許多人認爲的更接近。我仍然認爲最好的(最快的)答案是SSL不會阻止SQL攻擊,但我也開始看到SSL和準備好的語句應該一起使用以充分保護我的應用程序。 – AJB 2013-05-10 21:42:52