• 利用微软AntiXss Library过滤输出字符,防止XSS攻击


    假如项目在前期没有过滤客户提交的字符,那么可以在输出的时候,对输出的字符进行过滤,防止出现XSS跨域攻击。

    原理简单:利用ASP.NET API的管道原理,在MessageHandlers中添加一个自定义的处理环节。

    好了,源代码如下:

    public class MessageFilterOutputHandler : MessageHandler
        {
            protected override async Task OutgoingMessageAsync(HttpResponseMessage message)
            {
                var ps = await message.Content.ReadAsStringAsync();
                ps = AntiXssEncoder.HtmlEncode(ps, false);
                message.Content = new StringContent(ps);
            }
        }
        public abstract class MessageHandler : DelegatingHandler
        {
            protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
            {
                var response = await base.SendAsync(request, cancellationToken);
    
                await OutgoingMessageAsync(response);
    
                return response;
            }
            protected abstract Task OutgoingMessageAsync(HttpResponseMessage message);
        }

    其中,OutgoingMessageAsync方法中,利用了微软的AntiXss类库,防止输出:<script>,<iframe>等敏感字符。

    另外,Global文件中,在Application_Start方法中添加,对MessageFilterOutputHandler的调用。

    GlobalConfiguration.Configuration.MessageHandlers.Add(new MessageFilterOutputHandler());

    文章出处:www.cnblogs.com/jizhong

  • 相关阅读:
    iis日志时间与本地日期不一样
    iis原理介绍
    IIS如何确定请求的处理程序
    handle 和module
    调试IIS服务器
    JS面向对象学习
    图片垂直居中大杂烩
    淘宝双十一页面(Flexible)
    用rem适配移动端
    About getByClass
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/8027495.html
Copyright © 2020-2023  润新知