2013-05-08 49 views
0

我有一個用傳統的ASP編寫的表單,有一些輕客戶端驗證。除了一件事以外,一切都很好 - 當有撇號時,表單失敗。其中一個字段可能經常有撇號(例如,如果用戶的姓氏是O'Brien,則姓氏字段將失敗)。窗體 - 需要允許爲撇號

我該如何解決這個問題?

+1

以何種方式失敗?您是否看到錯誤消息,或者(更可能)您有[SQL注入](http://bobby-tables.com/)問題? – 2013-05-08 19:32:28

+0

我在輸入數據到數據庫的頁面上得到http 500錯誤 - 我禁用了http友好錯誤,但仍然得到了這個。我認爲這是SQL注入問題,只是不知道如何解決這個問題。 – 2013-05-08 19:34:06

+0

作爲FYI ..我有點熟悉替換(request.form(「LName」),「'」,「''」),但不確定如何實現它...沒有找到任何地方的例子。 – 2013-05-08 19:37:06

回答

1

您必須檢查您的ASP代碼。如果你看到任何代碼看起來像

string SQL = 
    "SELECT user_id, first_name,last_name FROM users WHERE username = " 
    + myUserName; 

其中myUserName來自用戶,那麼你肯定是脆弱的。

未修復該試圖逃跑的輸入(即,全部替換「'」和‘‘’’),但使用這篇文章中概述了SQL Injection and how to avoid it

一言以蔽之一個完全不同的方法,請從bobby-tables網站嘗試類似以下內容

String username = "joe.bloggs"; 
SqlCommand sqlQuery = new SqlCommand(
"SELECT user_id, first_name,last_name FROM users WHERE username = ?username", 
    sqlConnection); 
sqlQuery.Parameters.AddWithValue("?username", username); 
+0

非常感謝!在輸入字段到數據庫之前,我最終創建了一個刪除撇號的函數..(在我看到您的答案之前)。我也會測試一下,看看我是否可以實現它,因爲我一直在努力學習。非常感謝你的幫助! – 2013-05-08 20:08:58