安全扫描相关问题
9月22日,谷歌浏览器再次迈出激进安全步骤,Win10+Chrome94 版阻断 http 页面访问 localhost 服务,这一举动广泛影响了Web 模式下的系统。
其实就是为了推广https协议。
跨域问题
主要是由于浏览器同源策略限制引起,简单来说,就是只相信自己人,不相信外人,只响应同域名发来的 http 请求,不相信其他域名发来的 http 请求。
好处是减少上当受骗的几率,缺点是不符合 webapi 的大趋势,api访问会受限。
平台遇到的场景
当执行规则「调用WebAPI」,并且所要调用的 WebAPI 的地址,不是本服务域名的地址,在浏览器 Chrome 中就会报错,并且无法获取数据。
提示内容:
Access to XMLHttpRequest at 'http://localhost:xxxx/api' from origin 'http://xxx.xxx.com:xxxx' has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space `local`
解决方案:
服务的域名改用 https 彻底解决方案。
客户端自己手工设置步骤
在Chrome里打开实验室,地址是 chrome://flags/
搜索“Block insecure private network requests”项,设置为Disabled(禁用)
点击 Relaunch(重新启动)
- 客户端降低Chrome的版本为94之前的低版本。
- 把需要调用的域名调整为和服务的一级域名同域。
关于 V3.x 版本执行系统出现跨站点请求伪造漏洞的说明 - 零代码开发
原因:
导致该漏洞的原因是执行系统跟过滤器对请求的认证方法不充分。
解决方案:
在 “配置中心 → 系统高级配置 → 系统维护 → 配置管理 → http 基本请求参数” 中,
设置
needCheckRefererHeader
的值为true
,其他配置项根据需求设置。关于 Apache 的说明:
如果服务的外层有 Apache ,请设置参数 needCheckRefererHeader 的值为 false 。
同时,启用 Apache 自身的防盗链设置,具体方法可以参考:
检查配置文件中(\Apache2.4\conf\httpd.conf)的配置项:
LoadModulerewrite_module modules/mod_rewrite.so
,若该配置项被注释(#)则打开它;添加如下自定义配置:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER}!http://10.1.27.37:7080/ [NC] #v服务的地址
RewriteCond %{HTTP_REFERER}!http://10.1.27.37:9080/ [NC] #将需要排除过滤的站点以该方式添加,如 Apache 代理服务器
RewriteRule (.*)$ [F]注意若通过域名访问,则需要将域名加上,配置方法同上,复制一行,修改为域名即可:RewriteCond %{HTTP_REFERER}!http://www.xxx.xxx/ [NC]
问题描述:
零代码开发系统使用 IBM 的 appscan 扫描 V2.5 版本的执行系统出现高风险漏洞-跨站点脚本编制,应该如何解决?
解决方案:
在附件下载nginx.zip,配置单服务映射,即可。
下载:nginx.zip
利用的 HTTP POST 请求,指定一个非常大的 content-length,然后以很低的速度发包,比如 10-100s 发一个字节,hold 住这个连接不断开。
这样当客户端连接多了后,占用了 webserver 的所有可用连接,从而导致 DOS。
请在附件下载 nginx.zip ,已经配置好的 nginx 防止 slowhttptes t攻击。
下载:nginx.zip
问题描述:
- 缺少“X-XSS-Protection”头
- 缺少“X-Content-Type-Options”头
- 缺少“Content-Security-Policy”头
- 缺少 HTTP Strict-Transport-Security 头
- 会话 cookie 中缺少 HttpOnly 属性支持不推荐使用的 SSL 版本
- 跨站点请求伪造
解决方案:
使用nginx,如已有nginx,请添加如下配置:
#设置HSTS,强制需要输入https或http
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
这是为了失效某些浏览器的内容类型探嗅
#add_header X-Content-Type-Options nosniff;
防止跨站脚本 Cross-site scripting (XSS)
add_header X-XSS-Protection "1; mode=block";
add_header Set-Cookie "HttpOnly";
add_header Set-Cookie "Secure";
add_header X-Frame-Options "SAMEORIGIN";
add_header Content-Security-Policy: 'default-src self';如使用https,在配置https的server块添加如下配置:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;如没有nginx,请在附件下载nginx.zip,已封装好以上内容。
下载:nginx.zip
问题描述:
解决方案:
只要 POST 内容有 SQL 关键字、函数就会报有 SQL 注入风险,解决办法打补丁。
补丁和使用说明看附件。