iOS常见的H5安全问题(Safari on iOS、Chrome for Android)

1、跨站脚本攻击(XSS Cross Site Scripting)

网站一大堆文章 解释啥是XSS

举几个不常见的案例:

  • 通过SVG文件进行XSS
    SVG标签可以通过onload等事件在任何元素上执行JavaScript,而无需用户交互
    
    
    
    
  • 通过audio、video标签进行XSS
    audio、video标签标签可以通过onload等事件在任何元素上执行JavaScript,而无需用户交互
    
    
  • 通过内嵌iframe获取权限
  • 通过draggable API进行文本注入
    • 通过事件处理“ ondragstart”和值为“ true”的属性“ draggable”,“ setData”方法可以将文本“malicious code”而不是“Drop me”到iframe中。该iframe可以包含一个网页,其中包含一个用于输入数据的输入字段。请注意,由于安全隐患,跨域拖放功能同时受到严格限制。
    • 通常情况下,要禁用iframe的使用,可以在body的onLoad方法中遍历dom节点,移除iframe标签

2、跨域访问(CORS CrossOrigin Resources Sharing)

{
  "Access–Control-Allow-Origin": "*"
} 

对于设置了允许所有域访问的接口来说,带来快捷的同时,也带来风险
通常情况下只允许同域访问,在特殊情况下需要允许a.com访问b.com时,在b.com上设置如下来允许a.com访问

{
  "Access–Control-Allow-Origin": "http://a.com"
} 

对跨越访问的请求要严格校验session信息,包括请求头、请求参数等

3、Web Worker 和 Service Worker 带来的安全问题

Web Worker使用教程
Service Worker使用教程

通过预防XSS,来避免带来的问题

  • ddos
    用户一旦访问恶意页面或者网站时,页面的恶意代码就能把用户的浏览器当作肉鸡,利用WebWorker大规模执行多线程攻击,例如DDos攻击、发送垃圾邮件或者进行网络嗅探
  • postMessage + innerHTML带来的问题
    worker.addEventListener(‘message’,function(e) {    
      document.getElementById(‘result’).innerHTML = e.data;    
    }, false); 
    
    postMessage不通过服务器,如果不经过验证和过滤,可能成为XSS注入点。攻击者完全可以构造恶意的data来注入页面DOM,构造XSS攻击,形如“”等

4、file:// 协议跨域访问

WKWebview控件将allowFileAccessFromFileURLs 设置为YES,开启了file域访问,且允许file域访问http域,但是并未对file域的路径做严格限制。

[preferences setValue:@YES forKey:@"allowFileAccessFromFileURLs"]; 

你可能感兴趣的:(iOS常见的H5安全问题(Safari on iOS、Chrome for Android))