系统常见漏洞的修补

(1)、网站留言板或者一些注册页面,未对用的输入做转义及过滤,攻击者可提交精心构造的恶意脚本,可破坏后台网页结构,xss恶意弹窗

解决方案:对链接,参数进行过滤

   /// <summary>
    /// 过滤特殊字符串,过滤html
    /// </summary>
    /// <param name="str"></param>
    /// <returns></returns>
    public string StringIllegalFormat(string str)
    {
        if (!string.IsNullOrEmpty(str))
        {
            str = str.Trim();
            str = str.Replace("/", "?");
            Regex reg1 = new Regex(@"<[\s]*?script[\s\S]+<[\s]*?/script[\s]*?>", RegexOptions.IgnoreCase);
            str = reg1.Replace(str, "");
            Regex reg2 = new Regex(@"javascript[\s]*?:[\S]*?\(\w*?\)[\;]*?", RegexOptions.IgnoreCase);
            str = reg2.Replace(str, "");
            Regex reg3 = new Regex(@"on[\S]*?[\s]*?=", RegexOptions.IgnoreCase);
            str = reg3.Replace(str, "");
            str = str.Replace("alert", "alert");


            // 将输入字符串编码,这样所有的HTML标签都失效了。过滤Html标签
            StringBuilder sb = new StringBuilder(
                                    HttpUtility.HtmlEncode(str));
            // 然后我们选择性的允许<b> 和 <i>
            sb.Replace("&lt;b&gt;", "<b>");
            sb.Replace("&lt;/b&gt;", "");
            sb.Replace("&lt;i&gt;", "<i>");
            sb.Replace("&lt;/i&gt;", "");
            str = sb.ToString();
        }
        if (string.IsNullOrEmpty(str))
        {
            return "";
        }
        return str;
    }

(2)、跨站点脚本编制

解决方案:对参数进行编码后,再进行解码

System.Web.HttpUtility.UrlEncode(参数) //编码

System.Web.HttpUtility.UrlDecode(Request["参数"]) //解码

(3)、SQL注入问题

   尽量少用字符串拼接sql,使用参数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值