acunetix wvs网站漏洞扫描 XSS CSOR处理

一、XSS

acunetix扫描的漏洞中有 Cross site scripting (content-sniffing) 跨站点脚本(内容嗅探)就是在入参放入攻击脚本,然后后端没有处理,把这段脚本直接返回给前端,前端如果直接使用可能会有风险!

 所以后端不能直接将前端给的数据直接返回前端,错误信息需要处理。

比如登录名错误,不能返回登录名,可以提示登录名错误。如果把登录名直接返回就有风险。

 像下面这样:

{
    "errorCode": "xxx",
	"data": {
		"userName": "xxx‘攻击脚本’"
		}
	}
}

修改后

{
    "errorCode": "xxx",
	"data": {
		"userName": "xxx提示错误信息,不把前端输入的信息直接返回"
		}
	}
}

二、CSOR

跨域的问题很复杂牵扯很多东西,但是这里扫描的漏洞处理起来简单些。

 意思:因为任意域名都可以访问获取资源,不安全,需要只允许指定的域名访问

这个可以通过修改nginx配置来处理。

map $http_origin $allow_cros {
    "~^(https?://(origin.com)?)$" 1;
    "~*" 0;
}

map 的主要作用是创建自定义变量,通过使用 nginx 的内置变量,去匹配某些特定规则,如果匹配成功则设置某个值给自定义变量。 而这个自定义变量又可以作于他用。

这里,定义了变量 $allow_cros ,当nginx的内置变量,$http_origin,符合正则表达式  ~^(https?://(origin.com)?)$ 即 origin 是https://origin.com的域名 则$allow_cros变量值为1,否则 为0

    if ($allow_cros = 0){
            return 403;
        }

 这里,判断,当$allow_cros为0即origin的值不是指定的域名,返回403禁止访问。

完整demo

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    map $http_origin $allow_cros {
        "~^(http?://(dmp.xxxxxx.cn)?)$" 1;
        "~^\s" 1;
        "~*" 0;
    }

    server {
        listen       80;
        server_name  localhost;

        if ($allow_cros = 0){
             return 403;
        }

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
           proxy_pass http://192.168.10.105;
        }

    }

}

map是在http里,不在server里,而判断则可以在server或location里。

其它问题:

页面错误信息漏洞,应用程序错误消息漏洞

这两个类似,页面错误信息指输入错误信息导致后端返回异常的错误信息。只要后端再验证输入时严格限制数据类型和格式,只要不符合格式就返回提示报错信息就可以。

应用程序错误消息漏洞是接口因为其它原因返回的错误信息中可能有不正常信息。所以保证正常情况下不返回异常信息(500 服务器错误的异常信息)就可以。

目录列表漏洞

这个是挂载的文件服务器目录权限问题,在nginx里注释掉 autoindex: on 就可以了。

    location /getfiles/ {
        #autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Credentials true;
    }

参考博客:

Nginx根据Origin配置禁止跨域访问策略 - codest - 博客园

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值