c#验证参数sql注入和防止xxs脚本攻击

   

 1.正则表达式验证

  public static bool sqlValidate(string sql)
        {
            string badStr = @"\b(update|delete|insert|or|not|like|trancate|into|exec|master|drop|execute|net user|xp_cmdshell|go|create|grant|group_concat|restore|backup|net +localgroup +administrators|iframe|cookie|location|prompt|confirm|script|<a.*|<img.*)\b";
            Regex reg = new Regex(badStr, RegexOptions.IgnoreCase);
            return reg.IsMatch(sql);
        }

     3.过滤

前端过滤

function htmlEncode(str) {
    var s = "";
    if (str.length == 0) return "";
    s = str.replace(/&/g, "&amp;")
    .replace(/</g, "&lt;");
    .replace(/>/g, "&gt;");
   .replace(/ /g, "&nbsp;");
   .replace(/\'/g, "&#39;");
    .replace(/\"/g, "&quot;");
   .replace(/\n/g, "<br>");
    return s;
}
//解码
function htmlDecode(str) {
    var s = "";
    if (str.length == 0) return "";
    .replace(/>/g, "&")
    .replace(/</g, "<")
    .replace(/>/g, ">")
    .replace(/ /g, " ")
    .replace(/'/g, "\'")
    .replace(/"/g, "\"")
    .replace(/<br>/g, "\n");
    return s;
}

后端过滤

 public static string FilterHTML(string html)
        {
            if (html == null)
                return "";
            //将<转义成
            string strResult = html;
            strResult = strResult.Replace("<", "&lt;")
                    .Replace(">", "&gt;")
                    .Replace("&", "&amp;")
                    .Replace("\"", "&quot;");
            return strResult;
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# 中,可以采取以下措施来防止 SQL 注入攻击: 1. 使用参数化查询:使用参数化查询可以将用户提供的输入值作为参数绑定到查询语句中,而不是直接将输入值嵌入到 SQL 查询字符串中。这样可以防止恶意输入被解释为 SQL 代码。例如,在使用 SqlCommand 执行查询时,可以使用 SqlParameter 对象来设置查询参数。 以下是使用参数化查询的示例代码: ```csharp string sqlQuery = "SELECT * FROM Users WHERE Username = @username AND Password = @password"; using (SqlCommand command = new SqlCommand(sqlQuery, connection)) { command.Parameters.AddWithValue("@username", username); command.Parameters.AddWithValue("@password", password); // 执行查询... } ``` 2. 输入验证和过滤:在接受用户输入之前,进行输入验证和过滤是一种重要的安全措施。可以使用正则表达式、白名单过滤或其他校验机制来验证用户输入。确保只接受预期的输入,并拒绝或处理任何异常或恶意的输入。 3. 限制数据库权限:为了最小化攻击面,应该为数据库连接使用具有最低权限的账户。确保数据库账户只有执行必要操作的权限,并限制对敏感数据的访问。 4. 避免拼接 SQL 字符串:尽量避免直接拼接用户输入的值到 SQL 查询字符串中。如果需要动态构建查询语句,可以使用 StringBuilder 或类似的工具来安全地构建查询字符串。 5. 使用存储过程:存储过程是预编译的 SQL 代码,可以防止 SQL 注入攻击。通过使用存储过程,可以将用户输入的值作为参数传递给存储过程,而不是直接嵌入到 SQL 查询中。 综上所述,采取这些措施可以帮助您有效地防止 SQL 注入攻击。但是请记住,安全是一个持续的过程,需要综合考虑多种安全性措施来保护应用程序和数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值