实例1
xss漏洞产生的基本原因为:在Web应用的网页中,部分显示内容会依据外界的输入值而发生变化,在生成HTML的过程中,如果HTML语法中含有特殊意义的字符(元字符)没有被正确处理,结果就会导致HTML或者是Javacript被注入,从而使得原来的HTML结构发生变化,然后就会滋生出我们常说的xss漏洞。
实例1 的代码为:
对于用户输入的“name”没有做任何的处理。然后用JavaScript代码可以进行攻击<script>alert(123)</script>
防御对策:
htmlspecialchars函数:进行HTML的转义。
用法: string htmlspecialchars(string $string, int $quote_style, string $charset);
$string——转换对象字符串
$qote_style——转换方法(ENT_NOQUOTES,ENT_COMPAT,ENT_QUOTES)
$charset——字符编码。例如:UTF-8、GBK
<?php
echo htmlspecialchars($_GET["name"],ENT_COMPAT,"UTF-8");
?>
修改源代码之后再次输入时就没有弹框了,这句话被原样的输出在了页面上。
实例2
preg_replace(“/<script>/”,””, $_name);
这句代码将小写的 <script 替换为空。
但可以利用大小写绕过。
防御对策:同样利用htmlspecialchars函数过滤。
修改后再次测试,原样输出:
实例3
源代码:
/<script/的后面多了个小写的i,那么这就表示对大小写忽略。
不能用大小写过滤。
但是
可以用其他的xss攻击形式:<img src=1 onerror=alert(123)>
防御对策:
仍然用htmlspecialchars函数