gpt4 book ai didi

javascript - 如何防止客户端/服务器两侧文本框的sql注入(inject)

转载 作者:行者123 更新时间:2023-11-30 13:15:10 25 4
gpt4 key购买 nike

我对文本框有疑问。

  1. 当用户在文本框中写入内容时,它会保存它,但 sql 查询或错误文本或自动注入(inject)数据库的某些内容,我不知道它发生了什么;它在数据库中保存虚假数据。

  2. 我在想,sql是通过文本格式自动注入(inject)的。

谁能为我提供解决方案?

我不能限制特殊字符的文本框,这就是我面临这么多问题的原因。

最佳答案

如果无法过滤 Textbox,则必须过滤 Postback 中的数据。

  • 使用Server.HtmlEncode(your text here) 转义字符 通常用于 SQL 注入(inject):

string userInput = @"' or 1=1; -- ";

string encodedString = Server.HtmlEncode(userInput);

结果将是:

' or 1=1; -- <html>
  • 使用 Regex 将无效字符替换为空格或任何内容表示字符已被替换(使用 *):
Regex myRegex = new Regex("[\\\'\\\"\\<\\>=]", RegexOptions.Compiled | RegexOptions.IgnoreCase);
string userInput = @"' or 1=1; -- <html>";
string encodedString = myRegex.Replace(userInput, "");

结果将是:

or 11; -- html

  • 在 SQL 查询中使用参数并在添加之前验证值

using (SqlConnection cn = new SqlConnection("Your Connection string here")) {

            using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select * From [User] Where (UserName = @UserName AND Password = @Password)";
cmd.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = Server.HtmlEncode(txtUserName.Text);
cmd.Parameters.Add("@Password", SqlDbType.NVarChar).Value = Server.HtmlEncode(txtPassword.Text);
cn.Open();
IDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
// Your code here
}
}
}
  • 有自定义控件可以与选项一起使用,以控制用户可以在指定文本框中输入的内容。
  • Web 编程中的最后一条建议,您必须仔细检查(1- 客户端使用 JavaScript)和(2- 服务器端使用您自己的怀疑和顾虑规则)。

关于javascript - 如何防止客户端/服务器两侧文本框的sql注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12275771/

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