2011-09-21 45 views
0

可能重複:
Classic ASP SQL Injection Protection的MySQL/ASP Paramaterization,以防止注射

到目前爲止,我已經很幸運沒有了我的網站被SQL注入,可能很多攻擊其他方法也一樣。

我想知道如何將我的登錄查詢轉換爲使用參數,這顯然會阻止這種類型的攻擊發生。

我的查詢其實很複雜,所以我會在這篇文章中展示一個簡單的版本,然後我可以研究轉換後的版本,然後試着將其實現到我以後的真實查詢。

這是我目前有(簡體),這是自找麻煩:

username = Trim(Request("username")) 
password = Trim(Request("password")) 

SQL = " SELECT clientID FROM clientAccounts 
WHERE username = '"&username&"'AND password = '"&password&"'; " 
Set rs = conn.Execute(SQL) 

我將不勝感激,如果有人能告訴我如何做到這一點看,使用參數,以保護其免受注入。

問候

+0

你可以從這裏開始http://goo.gl/xKWhf –

回答

1

http://www.uberasp.net/getarticle.aspx?id=46

SqlConnection objConnection = new SqlConnection(_ConnectionString); 
objConnection.Open(); 
SqlCommand objCommand = new SqlCommand(
    "SELECT * FROM User WHERE Name = @Name AND Password = @Password", 
    objConnection); 
objCommand.Parameters.Add("@Name", NameTextBox.Text); 
objCommand.Parameters.Add("@Password", PasswordTextBox.Text); 
SqlDataReader objReader = objCommand.ExecuteReader(); 
if (objReader.Read()) 
{ 
    ... 

傳統的ASP,從http://blog.binarybooyah.com/blog/post/Classic-ASP-data-access-using-parameterized-SQL.aspx

With oSQLCommand 
     .ActiveConnection = oSQLConn 
     .CommandText = "SELECT * FROM whatever WHERE [email protected]" 
     'add input parameters 
     .Parameters.Append .CreateParameter("field1", adInteger, adParamInput, , iTableIdValue) 
    End With 
    'run the stored procedure 
    oRS.Open oSQLCommand 

而且,如果是爲了什麼重要的東西不寫自己的登錄密碼(即,你完全可以讓一個陌生人看到服務器上的所有東西)。需要花費大量的時間和測試才能做到正確,而且只有一個人(你)不能合理地希望第一次做對。

+0

我在經典的ASP,這是.NET的權利? – TheCarver