XSS脚本攻击及防御
2015-11-22 13:01
417 查看
最近是学校网页设计大赛作品提交阶段,我们寝室负责作品的部署和展示,室友就一 一对网站进行攻击,比如说,浏览网页死循环出现弹窗至浏览器奔溃,或者跳转网页,删除网页节点,让整个网页变成空白。然后我也学会了几招,最后赶紧处理了自己的网站漏洞,下面我就来分享一下我的经验(原谅室友的不杀之恩,嘿嘿)。
所谓的XSS就是跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。那么一般在什么地方容易被攻击呢?
在需要用户输入内容并且网页要显示该内容的地方就容易出现XSS漏洞。
这种攻击灵活性强,因为html标签语言是解释性语言,不用考虑编译错误的问题,攻击者可以根据网页的结构,通过自己输入的内容(含标记符)来改变网页的整体结构,达到网页错乱,或者其他问题。
下面我给大家集中不痛不痒的攻击代码:
1、简单弹窗:
显示用户cookie
我用自己的网站给大家图片演示,
显示弹窗前,我的网页是这样的:
输入脚本:
再次浏览我的网站:
弹窗显示cookie:
2、让用户浏览网页时候自动跳转到你想要的链接:
或者:
3、根据网页结构输入标记符让网页结构变乱,如下:
我的网页正常显示:
破坏节点后:
4、获取节点id移除网页的内容:
移除前:
移除后:
5、嵌入网站:
这里也可以插入更多内容(大小取决于网站数据库中这个字段的大小),这里也是最容易让浏览者上当的,因为攻击者可以在此处移除整个body,然后嵌入一个自己高仿的网站,当用户习惯性点击网页时,用户的cookie信息就被上传到攻击者的服务器。
以上就是简单的攻击,那么要怎么预防上面的情况发生呢?
其实很简单,开发者只需要在后台对输入的数据进行过滤,即替换所有的标记符就可以了。
好了,这些就是我的学习经验,希望对做网站开发的你有帮助,但是切记,不能攻击别人的网站,那样是犯罪。
更多博客请关注博主博客。
所谓的XSS就是跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。那么一般在什么地方容易被攻击呢?
在需要用户输入内容并且网页要显示该内容的地方就容易出现XSS漏洞。
这种攻击灵活性强,因为html标签语言是解释性语言,不用考虑编译错误的问题,攻击者可以根据网页的结构,通过自己输入的内容(含标记符)来改变网页的整体结构,达到网页错乱,或者其他问题。
下面我给大家集中不痛不痒的攻击代码:
1、简单弹窗:
<script>alert('哈哈!')</script>
显示用户cookie
<script>alert(document.cookie)</script>
我用自己的网站给大家图片演示,
显示弹窗前,我的网页是这样的:
输入脚本:
再次浏览我的网站:
弹窗显示cookie:
2、让用户浏览网页时候自动跳转到你想要的链接:
<script language="javascript" type="text/javascript"> window.location.href="http://www.baidu.com"; </script>
或者:
<script language="javascript"> window.location.replace("http://www.baidu.com"); </script>
3、根据网页结构输入标记符让网页结构变乱,如下:
Win10小技巧:</ul>如何<ul>去掉通知区</ul>域网络图</ul>标上的感叹号?
我的网页正常显示:
破坏节点后:
4、获取节点id移除网页的内容:
<script> document.getElementById("hot_news").innerHTML=""; </script>
移除前:
移除后:
5、嵌入网站:
<input type="text" value="插入输入框"/>
这里也可以插入更多内容(大小取决于网站数据库中这个字段的大小),这里也是最容易让浏览者上当的,因为攻击者可以在此处移除整个body,然后嵌入一个自己高仿的网站,当用户习惯性点击网页时,用户的cookie信息就被上传到攻击者的服务器。
以上就是简单的攻击,那么要怎么预防上面的情况发生呢?
其实很简单,开发者只需要在后台对输入的数据进行过滤,即替换所有的标记符就可以了。
好了,这些就是我的学习经验,希望对做网站开发的你有帮助,但是切记,不能攻击别人的网站,那样是犯罪。
更多博客请关注博主博客。
相关文章推荐
- 遥望布达拉——DAY5 折多塘-新都桥
- JMS基本概念
- 没有导入包快速导入
- 响应式Web设计- 图片
- sufficient statistic
- 为什么Java中1000==1000为false而100==100为true?
- 快速调出输出语句来
- 文件上传控件Fileupload(实现文件上传并写入数据库)
- dtrace for mysql
- ZZULI 1788 小金刚的宝藏(01背包模板)
- ASP.NET MVC中解决日志并发处理log4net
- 深入理解Java的接口和抽象类
- 快速删除当前行
- 快速格式化代码
- UIAlertController(弹框)控件
- Serverlet详解
- springMVC web.xml配置文件
- UIButton的使用
- 快速trycatch
- 高级换行