zoukankan      html  css  js  c++  java
  • 利用微软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());
    
  • 相关阅读:
    [py]函数小结
    [py]class的特殊方法
    [py]数据描述符优先级
    [py]python中__new__作用
    [py]django重置密码
    [py]多态的理解
    [py]类属性和实例属性
    【转】比较详细的Asp伪静态化方法及Asp静态化探讨
    VB6 XArrayDB | Xarray ReDim 用法
    vb6 使用msxml2.serverxmlhttp 请求HTTP
  • 原文地址:https://www.cnblogs.com/jizhong/p/3747059.html
Copyright © 2011-2022 走看看