<form action="phpben.com?user_name=benwin" onSubmit="alert('这是xss攻击的例子');" class= "" >
<input type="submit" value="提交" >
</form>
当提交表单的时候就会弹出提示框。
(1) 很明显$user_name在保存进数据库的时候没有过滤xss字符(和防注入很像,这里举例说明)==>发现漏洞
(2) 构造xss代码:benwin” onSubmit=”alert(‘这是xss攻击的例子');” class= “” 传入数据库
(3) 骗相关人员进来点击“提交”按钮
4.2常见xss攻击地方
(1)Js地方
复制代码 代码如下:
<script language="javascript">
var testname =" <?php echo $testname;?>";
</script>
$testname的值只要符合js闭合关系:“”;alert(“test xss “);”(以下同理)
(2)form表单里面
复制代码 代码如下:
<input type="text" value="<?php echo $val; ?>" />
(3)a标签
复制代码 代码如下:
<a href="benwin.php?id= <?php echo $id; ?>">a标签可以隐藏xss攻击</a>
(4)用得很多的img标签
复制代码 代码如下:
<img src="<?php echo $picPath; ?>" />
甚至一些文本中插入整个img标签并且用width、 height、css等隐藏的很隐蔽
(5)地址栏
总之,有输出数据的地方,更准确的说是有输出用户提交的数据的地方,都有可能是XSS攻击的地方。
4.3防XSS方法
防xss方法其实和防注入很相似,都是一些过滤、代替、实体化等方法
(1)过滤或移除特殊的Html标签。
例如:< 、>、<,、> '、”、<script>、 <iframe> 、<,、>、"
(2)过滤触发JavaScript 事件的标签。例如 onload、onclick、onfocus、onblur、onmouseover等等。
(3)php一些相关函数,strip_tags()、htmlspecialchars()、htmlentities()等函数可以起作用
5、CSRF
CSRF跨站请求伪造cross site request forgery。
5.1简单说明CSRF原理
(1)A登录Site1(如现在网民常上的淘宝、微博、QQ等),产生一些信息,session、cookies等等,且一直保持没退出。
(2)A再登录Site2(如一些成人网等,至于怎么跑到Site2,多数是Site通过些手段,邮件欺骗等),打开site2的浏览器和打开site1的一样,否则无效
(3)Site2站中伪造了Site1的http请求(如修改密码,买东西,转账等),Site1的服务器误以为A在site1的正常操作(因为同浏览器且A还没登出),然后就运行了请求,那么csrf已成功操作。
csrf和xss很相似。xss也能伪造请求,csrf也能制造脚本。
伪造的请求可以很多方面,发邮件、改密码、返回用户信息、交易等等,所以相对与xss攻击来说csrf危害更严重。
5.2防范方法。
对于phper
(1)严密操控执行入口
执行一些敏感操作比如改密码这些操作前判断请求来源,只有本站服务器发的请求才可以执行。判断方法可以判断ip来源。非本站服务器ip不会执行。
(2)本站有外链的话做些必要操作
一般site2的hacker会在site1(比如论坛里)里发欺骗连接,因为在site1诱骗的相关人员一般都登录site1了,满足csrf气体条件之一。
如当你点击QQ邮件里面的长外链时候,回跳转到一个页面提示“有风险”之类,这样不仅可以减低跳出率,一些不懂的人看到这样的提示,若不是非必要而是处于好奇点击的连接一般不会继续点击访问;还有是QQ邮件正文里的图片在加载内容时是不加载图片的,要点击“显示图片”按钮才显示图片,这里一个原因之一就是避免攻击。
当然对于用户体验来说这是不可取的,可以优化的是判断到一些网址(如QQ本身网址)是安全直接可以显示(不用提示),而可疑的才提示或禁止。
(3)防止csrf也可以用防xss的方法。
6、防盗链
盗链问题增加服务器的负担。盗链就是盗链网站盗取被盗链网站资源来实现一些功能。盗链方面主要是图片、视频、以及其他资源下载文件。
方法:判断ip,只有本站服务器才能使用站点资源,否则不能使用。
代码:
(1)在Apache htaccess添加
复制代码 代码如下: