【网安自学】XSS漏洞防御

一.XSS漏洞的产生很大原因是:程序没有经过过滤或者过滤的敏感字符不严密就直接输出或写入数据库,导致一些别有用心的人通过构造巧妙的脚本恶意代码来实施攻击。

二.根据漏洞产生的原因,防御XSS漏洞的方法就是对敏感字符进行转义和过滤

方法一:htmlspecialchars函数

格式:string htmlspecialchars(string $string, int $quote_style, string $charset);

三个参数的意义:

$string                

转换对象字符串

$quote_style       

转换方法(ENT_NOQUOTES,ENT_COMPAT,ENT_QUOTES) 

$charset              

字符编码。例如:UTF-8、GBK

三种转换方法:

ENT_COMPAT

 默认。仅编码双引号。

ENT_QUOTES

 编码双引号和单引号。

ENT_NOQUOTES

 不编码任何引号。

实例一:没有任何基本防御

进行防御:

【网安自学】XSS漏洞防御_第1张图片

将注入的代码进行了转义,使其失去了效果

实例二:对进行了过滤,没什么用,大小写组合直接绕过

【网安自学】XSS漏洞防御_第2张图片

进行防御:

【网安自学】XSS漏洞防御_第3张图片

【网安自学】XSS漏洞防御_第4张图片

实例三:对大小写都进行了过滤,并没有什么用,可以通过绕过

进行防御

【网安自学】XSS漏洞防御_第5张图片

实例四:使用img就可以绕过

【网安自学】XSS漏洞防御_第6张图片

进行防御:

【网安自学】XSS漏洞防御_第7张图片

实例五:可以使用confirm,prompt标签进行弹窗

【网安自学】XSS漏洞防御_第8张图片

进行防御:

实例六:可以使用a"; alert($a);$a="绕过

进行防御:

实例七:和实例六差不多,有htmlentities进行转义,但是却没有对 '(单引号进行转义)

构造payload:a';alert($a);$a='  可以绕过

进行防御:

实例八:

进行防御

/"οnsubmit=javascript:alert(1)%20name="

防御cookie泄露(开启Http-only)

1.对于session

【网安自学】XSS漏洞防御_第9张图片

(未开启)---->(开启):ini_set("session.cookie_httponly",1);

【网安自学】XSS漏洞防御_第10张图片

2.对于cookie,把setcookie的第七个参数设置为true

【网安自学】XSS漏洞防御_第11张图片

你可能感兴趣的:(网络安全,web安全,xss,java)