本文目录一览:
互联网黑暗面是什么?
这种融合了互联、共享和实时更新的网页技术,被冠以“第二代互联网”的称号,然而,它也成为企图向这个混合体注入恶意代码的入侵者的沃土。
微软一度是最主要的攻击对象,其文字处理程序、浏览器和操作系统中的薄弱环节被利用,但随着入侵者把注意力从电脑桌面程序转向web应用程序,谷歌(Google)、雅虎(Yahoo)和MySpace现在也同样可能受到攻击。
浏览器:Web 2.0主角
在Web 2.0环境,许多活动在浏览器内进行。举例来说,谷歌用户可在网页填写电子数据表、进行文字处理,而其日历和电子邮件收件箱的更新方式,与使用基于硬盘的微软Office套装软件相同。
区别在于,信息被不断嵌入网页,这些网页从谷歌服务器传送到用户浏览器,最常用的浏览器是Internet Explorer或火狐(Firefox)。
Web 2.0也代表社会软件(social software),包括维基(wiki)、博客(blog)、简易供稿(RSS)新闻源、标签(tagging)和社区站点。它是一个宽容的社区,用户可以自由地相互借用、添加并混合数据。
尽管这些技术和工具会带来新的自由,但也成为病毒编写者和个人身份信息盗窃者的“新天地”。
Web 2.0对恶意软件(malware)开发者的吸引力,部分在于运行Web 2.0的后台程序的复杂性。Ajax(异步JavaScript和XML)是一系列用来使网页更具互动性的技术的总称。运用这些技术,网页与服务器可自动交换少量数据,以刷新部分网页(如不断变化的股价或比分),让网页“活”起来。
“编写JavaScript代码约有100种不同的方法,火狐和Internet Explorer各有50种,”BreakingPoint Systems的安全研究主管HD•摩尔(HD Moore)称。“问题在于,很难区分善意与恶意代码。”
雅虎遇袭
6月份,一名病毒编写者用雅虎的web电邮服务发出了一封隐含某种JavaScript代码的邮件,使雅虎的网页邮件服务遭到“恶意代码”的冲击。由于雅虎允许网页执行JavaScript,因此其邮件系统很容易受到Yamanner蠕虫病毒的攻击。
任何打开邮件的人都激活了脚本,这些脚本向用户的地址簿发出请求,然后将蠕虫病毒发给地址簿中的每个人,其目的也许是为散布垃圾邮件而收集邮件地址。
“如果没有Ajax,Yamanner蠕虫病毒就不可能发生,”SPI Dynamics安全研究员比利•霍夫曼(Billy Hoffman)称。
“令人害怕的是,在雅虎看来,没有什么危险的事发生,用户只不过创建并发送了一封邮件。浏览器也一样,发现了某个Java脚本,就运行了它,而最终用户对此也无能为力。”
上月,谷歌RSS阅读器也发现了类似的缺陷。谷歌采用了JavaScript技术,以便用户能够为阅读器添加新闻源,而一位安全专家能够向新闻源地址添加数据,从而使浏览器连向另一个网站。如果带有恶意目的,所连向的可能是欺骗用户吐露个人信息的网络钓鱼(phishing)网站。
跨站脚本漏洞
网络安全业内将Web 2.0网站内的这些编码缺陷,称为跨站脚本(XSS)或跨站脚本漏洞。
近期利用跨站脚本漏洞的最著名事件,是去年10月份MySpace网站遭到的相对良性攻击。MySpace是如今最大的社交网站,用户人数达5400万。
19岁的洛杉矶软件开发员“Samy”编写了一段蠕虫程序,令他获得了逾100万网上“好友”,直至MySpace使该程序失效。他在自己的 MySpace简介里,置入一段JavaScript代码,这样每个查看简介的人会在不知不觉中执行这段代码。这段代码把他列为该用户的好友之一,而在通常情况下,列为好友需要得到该用户的同意,但他写的蠕虫使用Ajax技术,使之在后台批准他的请求。
接着,该蠕虫会打开该用户自己的简介,把恶意代码复制进去,并把Samy添加到那里的任何英雄列表中,还附上一句话:“但Samy是我最敬佩的英雄”。同样,任何查看该用户简介的人也会被感染,这样Samy的名声和“人气”迅速扩大到100万MySpace会员。
此时,该网站的管理员才发觉大量活动,被迫将MySpace关闭数小时,以清除该蠕虫病毒。
“在后台袭击MySpace、谷歌和雅虎的是跨站脚本,”计算机安全公司iSEC Partners主合伙人亚历克斯•斯坦默斯(Alex Stamos)说。“你可以通过脚本的输入输出过滤来进行阻挡。在传统的Web 1.0世界里,要处理的只有一大张以标准超文本标识语言(HTML)编写的网页,因此要把这些脚本阻挡在外并不难。”
但在Web 2.0中,插入脚本的方式如此之多,以至于进行阻挡要难得多,他说道。编写web应用的人,再也不能只用现成的过滤器了。
“24小时读完一本Ajax的书”
“你必须培训开发人员,”SPI的霍夫曼先生说。“围绕Ajax的炒作正导致一个问题:人们看到了MySpace的成功而纷纷采用Ajax技术。他们24小时内读完一本如何学会Ajax的书,然后创建一个存在安全隐忧的网站。”
此类初创网站得到了Ajax“框架”的帮助,“框架”就是现成的Web 2.0程序包。“利用Ajax框架的理念就是,你不必理解它如何运行。但我们的观点是,如果不知道它如何运行,你就不知道如何安全地使用它,”斯坦默斯表示。
他的公司探索了一些漏洞,当用户打开多个浏览器窗口,并在一个窗口里访问一个恶意站点时,可能导致在另一个窗口获得信息,并执行脚本。
SPI向一家网上股票经纪商展示了它所创建的恶意软件,该软件冒充会员身份,买卖他们的股票,并清空其银行账户。
程序开发人员将谷歌本地搜索(Google Maps)等应用,与在线分类广告服务网站Craigslist的广告结合起来,给出待售房产的位置信息,此类混合技术(mash-up)意味着,安全问题已扩展到不同的应用程序中。在RSS阅读器中聚合新闻源,并将用户对新闻条目所作的评论包含进去,这种做法也增加了引入恶意代码的概率。
然而,许多Web 2.0初创网站规模太小,无法把很多时间花在安全问题上。“在Web 1.0时代,安全性姗姗来迟,并且总是落在后面,这很正常,”斯坦默斯说。
“你不可能找到一个风险投资家,对他说你将拥有最安全的混合技术站点,然后得到2000万美元。你应该说,你将提供最酷的互动方式,这才会使你得到资助。”
xss攻击h和ddos攻击的区别
XSS攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。
分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。通常,攻击者使用一个偷窃帐号将DDoS主控程序安装在一个计算机上,在一个设定的时间主控程序将与大量代理程序通讯,代理程序已经被安装在网络上的许多计算机上。代理程序收到指令时就发动攻击。利用客户/服务器技术,主控程序能在几秒钟内激活成百上千次代理程序的运行。
什么是 CSRF 攻击,如何避免?
CSRF:Cross-Site Request Forgery(中文:跨站请求伪造),可以理解为攻击者盗用了你的身份,以你的名义发送恶意请求,比如:以你名义发送邮件、发消息、购买商品,虚拟货币转账等。
防御手段:
验证请求来源地址;
关键操作添加验证码;
在请求地址添加 token 并验证。
如何防止XSRF攻击
djangopost出现403的解决法据说,从django1.x开始,加入了CSRF保护。CSRF(Cross-siterequestforgery跨站请求伪造,也被称成为“oneclickattack”或者sessionriding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。-------来自百度百科报错:Forbidden(403)CSRFverificationfailed.Requestaborted.HelpReasongivenforfailure:CSRFtokenmissingorincorrect.Ingeneral,thiscanoccurwhenthereisagenuineCrossSiteRequestForgery,orwhenDjango'sCSRFmechanismhasnotbeenusedcorrectly.ForPOSTforms,youneedtoensure:Yourbrowserisacceptingcookies.TheviewfunctionusesRequestContextforthetemplate,insteadofContext.Inthetemplate,thereisa{%csrf_token%}templatetaginsideeachPOSTformthattargetsaninternalURL.IfyouarenotusingCsrfViewMiddleware,thenyoumustusecsrf_protectonanyviewsthatusethecsrf_tokentemplatetag,aswellasthosethatacceptthePOSTdata.You'reseeingthehelpsectionofthispagebecauseyouhaveDEBUG=TrueinyourDjangosettingsfile.ChangethattoFalse,andonlytheinitialerrormessagewillbedisplayed.YoucancustomizethispageusingtheCSRF_FAILURE_VIEWsetting.在网上找解决法,说是提交参数中要有csrf_token,才能成功。但网上都是1.3或者1.4版本的解决法,在1.5版本中测试已经不能用了。在1.5.1版本,我测试可行的解决法有三种:一:关闭csrf保护功能。为视图函数添加@csrf_exempt修饰符。fromdjango.views.decorators.csrfimportcsrf_exempt@csrf_exemptdefview(request):#yourcode..当然这样不安全。二:在模版文件中,每个form提交域中都加上{%csrf_token%}标签,并使用render函数返回视图,或者强行使用RequestContext代替Context。例:fromdjango.shortcutsimportrenderdefcontact(request):form=ContactForm()#这里我使用了一个django的表格returnrender(request,'contact.html',{'form':form})或者:fromdjango.shortcutsimportrender_to_responsedefcontact(request):form=ContactForm()#这里我使用了一个django的表格returnrender_to_response('contact.html',{'form':form},context_instance=RequestContext(request))contact.html的内容:ul.errorlist{margin:0;padding:0;}.errorlistli{background-color:red;color:white;display:block;font-size:10px;margin:003px;padding:4px5px;}sendContactus三:方法二显然只能限制在django模版中使用,那如果我们使用javascript或者AJAX的时候呢?怎么添加csrf_token呢?我们可以使用javascript来提取cookies中的csrf_token。functiongetCookie(name){varcookieValue=null;if(document.cookiedocument.cookie!=''){varcookies=document.cookie.split(';');for(vari=0;i