常见网络攻击及处理办法
2017-10-08 10:49
381 查看
跨站请求伪造(CSRF)
原理
危害是攻击者可以盗用你的身份,以你的名义发送恶意请求。比如可以盗取你的账号,以你的身份发送邮件,购买商品等例子
在某个论坛管理页面,管理员可以在list.php页面执行删除帖子操作,根据URL判断删除帖子的id,像这样的一个URLhttp://localhost/list.php?action=delete&id=12
当恶意用户想管理员发送包含CSFR的邮件,骗取管理员访问http://test.com/csrf.php,在这个恶意网页中只要包含这样的html语句就可以利用让管理员在不知情的情况下删除帖子了
<img alt="" src="http://localhost/list.php?action=delete&id=12"/>
使用post修改信息就安全了么?
<?php $action=$_POST['action']; $id=$_POST['id']; delete($action,$id); ?>
同样可以攻击
<!DOCTYPE html> <html> <body> <iframe display="none"> <form method="post" action="http://localhost/list.php"> <input type="hidden" name="action" value="delete"> <input type="hidden" name="id" value="12"> <input id="csfr" type="submit"/> </form> </iframe> <script type="text/javascript"> document.getElementById('csfr').submit(); </script> </body> </html>
如何防范
使用post,不使用get修改信息验证码,所有表单的提交需要验证码,但是貌似用起来很麻烦,所以一些关键的操作可以
在表单中预先植入一些加密信息,验证请求是此表单发送
跨站脚本攻击(XSS)
原理
跨站脚本攻击(Cross Site Script为了区别于CSS简称为XSS)指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。例子
我们有个页面用于允许用户发表留言,然后在页面底部显示留言列表<!DOCTYPE html> <html> <head> <?php include('/components/headerinclude.php');?></head> <style type="text/css"> .comment-title{ font-size:14px; margin: 6px 0px 2px 4px; } .comment-body{ font-size: 14px; color:#ccc; font-style: italic; border-bottom: dashed 1px #ccc; margin: 4px; } </style> <script type="text/javascript" src="/js/cookies.js"></script> <body> <form method="post" action="list.php"> <div style="margin:20px;"> <div style="font-size:16px;font-weight:bold;">Your Comment</div> <div style="padding:6px;"> Nick Name: <br/> <input name="name" type="text" style="width:300px;"/> </div> <div style="padding:6px;"> Comment: <br/> <textarea name="comment" style="height:100px; width:300px;"></textarea> </div> <div style="padding-left:230px;"> <input type="submit" value="POST" style="padding:4px 0px; width:80px;"/> </div> <div style="border-bottom:solid 1px #fff;margin-top:10px;"> <div style="font-size:16px;font-weight:bold;">Comments</div> </div> <?php require('/components/comments.php'); if(!empty($_POST['name'])){ addElement($_POST['name'],$_POST['comment']); } renderComments(); ?> </div> </form> </body> </html>
addElement()方法用于添加新的留言,而renderComments()方法用于展留言列表,网页看起来是这样的
因为我们完全信任了用户输入,但有些别有用心的用户会像这样的输入
这样无论是谁访问这个页面的时候控制台都会输出“Hey you are a fool fish!”,如果这只是个恶意的小玩笑,有些人做的事情就不可爱了,有些用户会利用这个漏洞窃取用户信息、诱骗人打开恶意网站或者下载恶意程序等
如何防范
上面演示的是一个非常简单的XSS攻击,还有很多隐蔽的方式,但是其核心都是利用了脚本注入,因此我们解决办法其实很简单,不信赖用户输入,对特殊字符如”<”,”>”转义,就可以从根本上防止这一问题,当然很多解决方案都对XSS做了特定限制,如上面这中做法在ASP.NET中不幸不同,微软validateRequest对表单提交自动做了XSS验证。但防不胜防,总有些聪明的恶意用户会到我们的网站搞破坏,对自己站点不放心可以看看这个XSS跨站测试代码大全试试站点是否安全。相关文章推荐
- nagios常见错误及处理办法
- 服务器网络故障处理——常见链路异常场景和测试报告
- 2015腾讯校园招聘笔试题:流量劫持是网络中常见的网络问些,哪些情况会造成流量劫持?及常见网络攻击方式
- WEB网站常见受攻击方式及解决办法
- eclipse编译java程序常见错误处理办法
- 网络验证常见的攻击方式与防御手段
- VMware10中安装Centos网络无法使用的处理办法
- 网络常见攻击方式和预防手段 一
- Range在各浏览器下的问题和常见处理办法
- 常见网络攻击和预防
- 网络服务器常见问题及处理
- 阿里云(四)Linux 实例常用内核网络参数介绍与常见问题处理
- 常见的网络攻击
- 常见网络攻击简介
- mysql常见错误代码、原因及处理办法
- 几种常见的二层网络攻击
- 常见网络攻击类型
- Range在各浏览器下的问题和常见处理办法
- windows 2003服务器网络异常流量的处理办法
- InfoPath的常见处理办法