web安全-XSS(二)

XSS攻击通常指的是利用开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,控制用户的浏览器的一种攻击。

XSS攻击一般分为两大类,第一类是反射型XSS,即简单的将用户的输入反射给浏览器。第二类是存储型XSS,将用户的输入保存在服务器,并持久存在。

下面看一个例子:

<?php
$v=$_GET["parm"]
echo "<div>".$v."</div>"
?>
正常情况下,请求链接为:http://a.com/test.php?parm=123 会输出:<div>123</div>
如果请求的链接为:http://a.com/test.php?parm=<script>alert("ceshi")</script>时,则会输出<div><script>alert("ceshi")</script></div>
如果仅仅是使用了参数,并没有存储,则攻击只是简单的输入输出,如果我们将参数保存,则该问题会持久存在。

从上面的例子可以看出,攻击者通过构造特殊的代码,欺骗服务器或浏览器去执行,如果破坏了攻击者精心构造的特殊代码,攻击也就不复存在了。例如上面的例子,如果我们将获取到的参数进行urlencode,则"<"会进行转义,此时script标签页就不复存在,代码页无法执行。

一般XSS攻击主要是存在于可动态执行语句的服务器(一般是解释型语言)和前端,为了防止XSS攻击,基本原则是,所有的输入全部是不可性的,所有的输入都必须要进行安全检查,对于所有的输出,都进行相关的html编码,破坏输出中的特殊结构。

猜你喜欢

转载自www.cnblogs.com/zp900704/p/12333605.html