gpt4 book ai didi

MySQL/ASP 参数化以防止注入(inject)

转载 作者:行者123 更新时间:2023-11-29 14:43:33 25 4
gpt4 key购买 nike

Possible Duplicate:
Classic ASP SQL Injection Protection

到目前为止,我很幸运没有让我的网站受到 SQL 注入(inject)攻击,也可能还有许多其他方法。

我想知道如何将我的登录查询转换为使用参数,这显然会阻止此类攻击的发生。

我的查询实际上相当复杂,所以我将在这篇文章中展示一个简单的版本,这样我就可以研究转换后的版本,然后尝试将其实现到我的实际查询中。

这是我目前拥有的(简化的),这是自找麻烦:

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

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

如果有人可以向我展示如何使用参数来保护它免受注入(inject),我将不胜感激。

问候

最佳答案

来自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 field1=@field1"
'add input parameters
.Parameters.Append .CreateParameter("field1", adInteger, adParamInput, , iTableIdValue)
End With
'run the stored procedure
oRS.Open oSQLCommand

此外,如果您有任何重要的目的,请不要编写自己的登录代码(即,您可以接受一个完全陌生的人可能看到您可以看到的服务器上的所有内容)。需要花费大量的时间和测试才能做到正确,并且一个人(您)无法合理地希望第一次就做对。

关于MySQL/ASP 参数化以防止注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7494006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com