XSS 常用防御方式

1. HTML

1.1 head 设置charset = UTF-8

  • 防止IE下自动使用 UTF7

1.2 content-type JSON时 需要明确设置

  • 防止给JSON中注入js

2 HTTP响应头

2.1 X-XSS-PROTECTION: 1;mode=block

  • 开启浏览器XSS过滤器

2.2 X-Frame-Options:deny

  • 响应头会被禁止加载到frame中

2.3 X-Content-Type-Options:nosniff

  • 禁止浏览器做MIME嗅探

2.4 [重要] Content-Security-Policy: default-src:'self'

  • 只允许本origin的资源
    • default-src = 各种资源
    • script -src , img -src 脚本资源, 图片资源

可以设置的值除了 self 之外 script-src还可以设置 unsafe-inline 但一定要跟 nounce

2.5 Set-Cookie:key = value; HttpOnly

  • 设置Cookie成为只读

2.6 Content-Type:type/subtype;charset=utf-8

3 服务端语言 用各自的转义库去encode和decode

你可能感兴趣的:(XSS 常用防御方式)