X-XSS-Protection头
HTTP X-XSS-Protection响应标头是 Internet Explorer, Chrome 和 Safari 的一项功能,可在检测到反射的跨站点脚本(XSS)攻击时阻止页面加载。
X-XSS-Protection: 0 X-XSS-Protection: 1 X-XSS-Protection: 1; mode=block 123
0:关闭浏览器的XSS防护
1:删除检测到的恶意代码, 如果响应报文中没有看到X-XSS-Protection 字段,那么浏览器就认为X-XSS-Protection配置为1。默认设置
1; mode=block:当检测到反射的XSS攻击时阻止加载页面
PHP用法:
header("X-XSS-Protection: 1; mode=block"); 1
Apache (.htaccess)
<IfModule mod_headers.c> Header set X-XSS-Protection "1; mode=block" </IfModule> 123
ASP.net
Response.AppendHeader(X-XSS-Protection",1") 1
htmlspecialchars()函数
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
& (和号)转换 & " (双引号)转换 " ' (单引号)转换 ' < (小于)转换 < > (大于)转换 > 12345
语法:
htmlspecialchars(string,flags,character-set,double_encode) 1
我们来看第二个参数flags:
ENT_COMPAT会转换双引号,不转换单引号。 ENT_QUOTES既转换双引号也转换单引号。 ENT_NOQUOTES单/双引号都不转换 123
默认只替换双引号。这一步导致了xss注入