2012-11-19 63 views
1

我們已經制定了一個ASP.NET應用程序和筆測試報告下列錯誤無法插入NULL值到主鍵列錯誤

Improper error handling is observed in the application.The application discloses database details such as table name and column name during SQL query execution. This vulnerability is identified when the parameter 「txtCity」 is left blank and the form is submitted.

數據庫細節在下面的錯誤披露:

Cannot insert the value NULL into column ‘column_name’, table ‘table_name’; column does not allow nulls. INSERT fails. The statement has been terminated."

sql語句作爲存儲過程執行。我們無法複製網頁上的錯誤,但我們嘗試並提交表單。請幫助我們解決問題。您的幫助將不勝感激。 web配置文件的

+2

你問如何提交表單而不提供城市?您可以使用Fiddler將提交的值混淆,例如,如果客戶端驗證阻止您重現此操作,則不需要提交任何「txtCity」或禁用javascript。還要在web.config中打開自定義錯誤,以便不顯示錯誤消息。 –

+0

你能告訴我們表結構,過程和代碼嗎? – SchmitzIT

回答

0

用戶自定義錯誤,請

<system.web> 
    <customErrors mode="Off"> 
     <error statusCode="404" redirect="Templates/PageNotFound.html" /> 
     ... 
     ... 
    </customErrors> 
<system.web> 

那麼就不會有將不會顯示任何自定義錯誤。 您也可以使用Gloabal文件來跟蹤您的應用程序中發生的錯誤。

void Application_Error(object sender, EventArgs e) 
{ 
} 

驗證從Java腳本輸入txtCity以及你的代碼隱藏前的文本框中。
原因可能是由測試團隊禁用了java-script。所以你的java腳本驗證不起作用。
因此,驗證來自C#或vb的文本,這是您正在使用的文本。

1

滲透測試人員只會查看您的表單是如何提交的,然後手動重新提交,而忽略前端中的任何驗證。

這可以通過多種方式完成。例如,使用類似Burp代理服務器的瀏覽器和您的網站之間的請求,或者在瀏覽器的開發者工具中進行簡單的檢查,都會顯示您的表單提交端點的位置,參數以及使用的提交方法。然後,攻擊者可以使用他們擁有的任何工具,將他們想要的任何數據發送到您的表單端點。

問題是,全部由網頁提供的前端安全性可以很容易地繞過,以便將任何參數值發送到表單提交頁面。所以你必須考慮你的後端安全。不要依賴網頁前端代碼中的「安全性」;前端驗證代碼就是爲了給合法用戶提供幫助。

您可以通過停止向前端顯示SQL錯誤來解決您的一般情況,或者在此特定情況下,您可以確保在您的服務器代碼中,在嘗試對數據庫執行SQL查詢之前,所有表單參數都有效基於這些參數。