原来开发过支付宝的支付,但是时间太长,现在更新又这么快,所以又回过头重新研究了一遍支付宝沙箱环境下的支付。目前来说只能研究沙箱环境下的支付了,因为其他的都需要各种证书才能申请,个人小网站目前来说还不支持。
首先根据系统下载生成器。
打开软件后先点击:生成秘钥,然后点击:打开秘钥位置,即可获得一个公钥和一个私钥。
点击一开始沙箱环境的RSA2(SHA256)密钥中的设置,只需要将公钥内容复制到文本框中,其它默认就会自动生成公钥了。
然后去官方文档中下载PHP的demo。
下载完成后打开根目录下的config.php进行配置。其中以下三样分别填入app_id、gatewayUrl、alipay_public_key。
私钥请使用一开始软件生成的那个文件中的内容,至于两个地址return_url和notify_url中的域名必须用线上地址,不能使用本地开发,其他参数默认即可。
可以设置return_url.php和notify_url.php中的逻辑来测试一些内容,内部有详细的注释这里我就不多说了,然后运行根目录下的index.php即可。
选择支付时,因为这里是测试沙箱,所以使用官方提供的测试账号。
end
config.php一定要用支付宝公钥而不是应用公钥。
谷歌浏览器可能会有拦截,建议使用其他浏览器测试。
本地无法测试沙箱环境,必须使用线上地址。
支付宝正式网关和测试网关非常相似,一定检查仔细(本人掉到坑里了)。
先说一下结论:[1, NaN, NaN],造成这样的原因是什么呢?
首先要先理解函数的意义,map()是将数组的每个元素传递给指定的函数处理,并返回处理后的数组,原数组不改变。单纯这样看可能就会出现脑子里一开始的答案[1,2,3],但为什么不是呢,重点来了!
map()函数是将1,2,3作为元素,和下标0,1,2分别传递给parseInt()函数,其实每个效果写出来就是:parseInt('1',0),parseInt('2',1),parseInt('3',2)的结果。parseInt()函数第二个参数的意义是指明前面参数的进制,从而转化成十进制输出,区间范围是0和2-36,默认是十进制也就是0。0默认是十进制所以1还是1,1不在有效范围内所以2变成NaN,2要求前面的参数必须以二进制0和1开头开始,所以也是NaN。
先上一段代码,假设页面中有4个li标签猜猜输出什么?
var elements=document.getElementsByTagName('li'); var li_length=elements.length; for (var i=0;i<li_length;++i){ elements[i].onclick=function () { alert(i) } }
答案:不管点哪一个一直输出4。
这其实就是事件异步引发的问题,循环过程中对DOM元素事件是绑定成功的,这一点是没有问题的,但是alert中的i却一直是以变量的形式存在的,当i经过一套for循环下来后最终的值变成了4,所以当点击事件触发,去调用i这个值时,是调用的当前变量内容,而不是覆盖之前的变量内容。
其实可以更明显一点,直接在循环外面去改变i的值,比如说在for循环下面给i赋值为999,那么当你触发点击事件时就会输出999;
先上一段代码猜猜输出什么?
var arr=[]; arr[1]=9; arr[3]=99; arr[9]=999; arr['a']='b'; arr['c']='d'; console.log(arr.length)
答案:10。
这里length实际上是根据数组的下标获取,而数组下标是从0开始的,所以这里获取最大下标9,然后加1最终返回的结果10。假设没有任何一个数值下标的元素,则就会输出0。
其实在js中数组的下标是不能存在字符串的,但如果我们尝试着把字符串作为下标使用,其实js会把这个认为是属性来看待,就像我们的对象一样,以键值对的形式存在。
有些代码不是单纯赋值之后就会分割成两个个体。
var arr=[1,2,3,4,5]; var arr2=arr; arr[1]=999; console.log(arr2[1])//999
这里虽然看上去是把arr的值赋给了arr2,实际上只是把arr的地址赋给了arr2,所以当我们改变arr的值时,arr2对应的值也会改变。
要想完全复制出来一份数组可以用以下方式:
var arr=[1,2,3,4,5]; var arr2=[...arr]; arr[1]=999; console.log(arr2[1])//2
every()和some()都是迭代函数,二者都是接受一个返回值为布尔值的自定义函数,对数组中的每个元素使用该函数,最终every()或some()返回一个布尔值。不同的是every()要求数组中的每个元素通过自定义函数时都返回true,那every()本身才会返回true,而some()中的自定义函数只要有一个返回true,则some()就会返回true。
function isEven(num) { return num % 2 == 0; } var nums = [2,4,6,8,10]; var nums2 = [2,4,7,8,10]; var nums3 = [1,3,5,7,9]; console.log(nums.every(isEven));//true console.log(nums2.every(isEven));//false console.log(nums2.some(isEven));//true console.log(nums3.some(isEven));//false
而filter()也是迭代函数,和every()类似,但是他返回的不是布尔值,而是经过自定义函数返回值为true的元素。
function isEven(nums){ return nums%2==0; } var arr=[1,2,3,4,5,6,7,8,9]; var arr2=arr.filter(isEven) console.log(arr2)//[2,4,8]
目前最常用的搜索引擎,没啥好说的,就是感觉现在广告越来越多了,而且有些东西局限性太大,有的有太夸张,就像大家说的,百度疾病癌症起步~
世界上最大的搜索引擎之一,可以检索国外网站信息,但是和YouTube一样需要自己翻墙后使用,推荐速鹰666可以实现,稳定性和网速都不错,内有教程和说明。
和百度差不多,都是国内比较大的搜索引擎,一样的广告政策,没什么亮点。
秘迹搜索是一个界面简洁但是功能强大的良心搜索网站,可以帮你过滤搜索结果里面的广告。
它主要的特点就是:一个不追踪你的搜索引擎,不会根据搜索关键词追踪用户,也不会通过历史搜索内容做广告推荐,它也没有在你的浏览器上种任何Cookie。
它还有的特点就是帮助你过滤搜索结果的广告信息,帮你屏蔽搜索结果的广告,让你可以轻松的找到你需要的结果,并且提供一键聚合搜索。
微软所出的一款搜索引擎,目前改名为:Microsoft Bing,目前对它的评价褒贬不一,不过某些方面上比百度强一些,比如说学术文章、答案什么的归类汇总。
一款主要为了检索文档文章小说一类的的搜索引擎,只不过下载时可能需要关注可恶的公众号。
集合各个站点的热点排行榜,包括但不限于:微博、知乎、微信、哔哩哔哩、抖音、百度……
一个纯粹的展示装逼界面,内容很大,网速不佳的可能打开速度非常慢。打开后选择一种模式,只要随便敲击键盘,就会像电影中一样闪现不同的代码和窗口。
用超高像素看世界,里面的图片都是几十亿像素起步的,甚至内部还有上千亿像素的图片供你欣赏。照片内容也值得一看,比如说七亿像素的的清明上河图足够你看清任何细节,184亿像素故宫皇极殿内景,800亿像素北京天际线……
可查看世界各个地方,而且基本除中国外都有街景,足不出户可以查看世界各大景点,但是和YouTube一样需要自己翻墙后使用,推荐速鹰666可以实现,稳定性和网速都不错,内有教程和说明。
可以查看地球风向,包括洋流和台风在内,你可以观察到风起地点,以及范围,还可以更改高度。
可以知道地球轨道外有多少悬浮垃圾,并且每一片你都能知道确切的来源。
实时卫星预计应该是每隔一小时左右更新一次,但是如果拖动放大可能就是几年的前的图片了,卫星也不可能一直发送超高像素的全球图片。
界面很玄幻,很高级,但具体是不是真的我也不是很清楚,反正不是很懂,主要是看个热闹。
可以查询淘宝、京东、拼多多等多个平台商品的历史价格,包括使用优惠券减免后的价格,缺点是查看长期价格变动目前需要关注公众号,但是总体还是一个比较靠谱的网站,再也不会因为价格而犹豫了。
个性化你的电脑设备,探索丰富多彩的主题、壁纸、图标、皮肤等酷炫的美化素材。可以修改电脑主题,背景,鼠标样式等,花样繁多,总有一款适合你。
U盘忘带了或者软件有文件传输上限,不要怕,这个网址可以帮你解决这些问题,免于登陆处理,只需上传文件,生成密码,其他人凭借密码就可以在其他地方登录网站下载,不过不建议上传很重要的文件,以防泄露。
提供各种优质、快捷、易用的在线工具,无需下载安装即可使用,有图片和视频的压缩、处理、合并以及其他小功能。
一个较大的工具箱,内部的在线功能应该是分享中最大的一款网站,涉及面广而全,但其实更适合一些有计算机基础的人使用。
为大家提供简单、有趣、好用的在线工具大全。适用于生成各种昵称、头像以及符号。
也是收录了一些实用工具,可能与其他工具箱重复但也有自己的特色,比如:表白网址生成、朋友圈随机语录……
收入了一些免费、稳定、快速的API数据接口调用服务平台,例如:生成随机密码、生成短链接、生成二维码,域名详情查询、手机号所属地区……
等待更新……
角色升级所需经验列表
流浪者的经验:1000角色经验
冒险家的经验:5000角色经验
大英雄的经验:20000角色经验
等级 | 升级所需经验 | 大英雄经验书 | 冒险家经验书数量 | 流浪者经验书数量 | 所需摩拉数量 |
1级升20级所需: | 大致30725经验 | 大约1.5本 | 大约6本 | 大约40本 | 大致24035个 |
10级升20级所需: | 大致89450经验 | 大约4.5本 | 大约18本 | 大约89.5本 | |
21级升30级所需: | 大致242025经验 | 大约12本 | 大约48.5本 | 大约253本 | 大致135655个 |
31级升40级所需: | 大致336300经验 | 大约17本 | 大约67本 | 大约336.5本 | |
41级升50级所需: | 大致579100经验 | 大约29本 | 大约116本 | 大约579.5本 | 大致155820个 |
51级升60级所需: | 大致845125经验 | 大约42本 | 大约169本 | 大约845.5本 | 大致220825个 |
61级升70级所需: | 大致1195925经验 | 大约60本 | 大约239本 | 大约1196本 | 大致319185个 |
71级升80级所需: | 大致1611875经验 | 大约80.5本 | 大322约本 | 大约1612本 | 大致422375个 |
81级升90级所需: | 大致3423125经验 | 大约171本 | 大约685本 | 大约3432本 | 大致804625个 |
一个角色从1级到90级,需要经验8362650=418本大英雄的经验书=1673本冒险家的经验=8363本流浪者的经验,大约等于挑战蓝花41次,需要摩拉2460030个,约等于挑战金花22次,也就是说如果不算素材消耗的话需要树脂1260点,每天树脂如果不溢出是180点,也就是说正好一周刷地藏之花可以攒够经验和摩拉,各种元素晶石比较看脸,这里就不做估计了。
等级 | 升级所需经验 | 大经验矿数量 | 水晶矿数量 | 所需摩拉数量 |
1级升20级所需: | 大致81000经验 | 大约8个 | 大约32个 | 大致8100个 |
20级升40级所需: | 大致415125经验 | 大约41.5个 | 大约167个 | 大致46512个 |
41级升50级所需: | 大致418725经验 | 大约42个 | 大约168个 | 大致56873个 |
51级升60级所需: | 大致618400经验 | 大约62个 | 大约248个 | 大致81840个 |
61级升70级所需: | 大致866050经验 | 大约87个 | 大约348个 | 大致116605个 |
71级升80级所需: | 大致1166875经验 | 大约117个 | 大约468个 | 大致151687个 |
81级升90级所需: | 大致2476475经验 | 大约248个 | 大约992个 | 大致292648个 |
等级 | 升级所需经验 | 大经验矿数量 | 水晶矿数量 | 所需摩拉数量 |
1级升20级所需: | 大致121550经验 | 大约12.5个 | 大约50个 | 大致12155个 |
20级升40级所需: | 大致622800经验 | 大约62.5个 | 大约251个 | 大致72280个 |
41级升50级所需: | 大致628150经验 | 大约63个 | 大约252个 | 大致82815个 |
51级升60级所需: | 大致927675经验 | 大约93个 | 大约372个 | 大致122767个 |
61级升70级所需: | 大致1299125经验 | 大约130个 | 大约520个 | 大致174913个 |
71级升80级所需: | 大致1750375经验 | 大约170个 | 大约700个 | 大致230037个 |
81级升90级所需: | 大致3714775经验 | 大约371.5个 | 大约1486个 | 大致436478个 |
四星武器总共需要经验6042650,摩拉754265个。
四星武器总共需要经验9064450,摩拉1131445个。
在一些类似于文章博客的内容中,会用到模糊搜索检索多个字段,对于检索后的结果排序可能并不满意。
例如:
在CSDN搜索一篇博文,在输入关键字后会检索文章的标题,内容,分类,标签等内容,但是检索的排序结果可能不太理想,比如想优先显示标题中带有此关键字的文章,不管是按主键或者时间排序都是不行的。
下面我就简单的说明一下遇到这种问题的几种解决办法:
利用LOCATE函数(MySQL数据库),按照匹配度进行排序。
locate(subStr,string) 函数返回subStr在string中出现的位置,返回结果大于0代表着subStr出现的位置(从开始就存在则为1,即如果string中存在subStr最小值为1),如果等于0则说明subStr不存在。
检索`name`和`memo`字段中存在'shx'的信息,并优先显示`name`字段中存在'shx'信息并且出现位置靠前的数据:
SELECT `name`,`memo`,locate('shx',`name`) as `order_name` FROM `cs_user` where `name` like "%shx%" or `memo` like "%shx%" order by `order_name` desc
检索`name`和`memo`字段中存在'shx'的信息,并优先显示`name`字段中存在'shx'信息并且出现位置靠前的数据,如果`name`字段中'shx'信息出现的位置相同或者都不存在,即`order_name`为0时,则优先显示`memo`字段中存在'shx'信息并且出现位置靠前的数据:
SELECT `name`,`memo`,locate('shx',`name`) as `order_name`,locate('shx',`memo`) as `order_memo` FROM `cs_user`where `name` like "%shx%" or `memo` like "%shx%" order by `order_name` desc,`order_memo` desc
等待更新
浏览器的同源策略(Same origin policy),它是一种约定,也是浏览器最核心最基本的安全功能。所谓同源指的是:协议(是指http和https)、域名(domain)、端口(port)相同。
在php后端api入口文件中加入下面的代码即可解决问题:
header("Access-Control-Allow-Origin:*"); header("Access-Control-Allow-Methods:GET, POST, OPTIONS, DELETE"); header("Access-Control-Allow-Headers:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, Accept-Language, Origin, Accept-Encoding");
CORS是一个W3C标准,全称是“跨域资源共享”(Cross-origin resource sharing),它允许浏览器向跨源服务器发出XMLHttpRequest请求,从而克服了只能同源调用的限制。
Access-Control-Allow-Origin指的是允许发起跨域的域名。
在浏览器跨域请求中,请求头(request headers)会出现Origin字段(有个奇怪现象,谷歌游览器在非跨域情况下,也会发送origin字段),这个字段会与Access-Control-Allow-Origin字段的内容进项匹配,如果发现符合Access-Control-Allow-Origin字段的要求才会放行通过,否则会出现CORS错误。
但实际上Access-Control-Allow-Origin有很多的设置方式,“*”是最粗暴简单的,但也是最不安全的,它代表着所有请求都允许通过。如果为了服务器安全考虑不建议这么设置,最好还是使用具体的域名地址。而且如果是“*”的话,浏览器将不会发送cookies,即使你的xhr设置了withCredentials,只有在指定域名下才允许发送。
Access-Control-Allow-Methods指的是请求的方式。
Access-Control-Allow-Headers指的是请求的自定义请求头字段。
跨域时浏览器会向服务器发送预检请求,询问是否支持跨域的自定义header字段,这时候就需要设置的Access-Control-Allow-Headers字段进行应答。
其实对于电影电视剧,完全可以按照豆瓣评分由高到低,直接全部看一遍,但其实很多高分剧并不是很符合一些人的口味,下面就是我平常闲来无事刷到的电视剧和电影,在我感觉还不错的,以下内容不分先后,篇幅会随时补充。
有些电影电视剧从正常途径包括腾讯视频、爱奇艺、优酷等等是看不到的,所以在这里我也放下一些网站方便大家去查找观看并下载:
茶杯狐---首推,观看和下载二合一网站,适用于pc端和移动端。
视频鱼---专门的下载网站,可以破解腾讯、爱奇艺、优酷等主流播放软件的一些视频。
965影视---专门的观看模式,更新最快的网站,某些视频的超前点播可以在此看到。
《暗黑》,又名《dark》,德国烧脑神剧,豆瓣评分曾高达9.7分,第一部于2017年上映,共分三部,目前已完结。就个人体验来看,有必要带个小本本边记边看,又或者先看一遍剧情,不用担心会剧透,因为就算剧透了毫不影响你看正片时一样的懵逼。
该剧主要讲述了德国温登小镇的居民在1888年、1921年、1953年、1986年、2019年和2053年六条时间线和三个次元之间不停穿越试图终结循环的故事,具体内容我局不多做赘述了,相信光看时间线和三个次元就已经感受到编剧大脑的脑洞了。不过我可以说几个简要剧情:我的小伙伴穿越回去成为了我的爸爸、我是我自己的祖宗、我回到过去生下了我妈妈,这些只是整部剧槽点的一点点,最后基本上整个小镇的人都是几个人来回穿越产生的悖论集合体。
下面放一张图提前暴露一下人物关系,防止直接弃剧,人名请忽略,因为放真名字看不懂还特别长,图片来源和讲解请看片片说大片:
《仙剑奇侠传三》是根据国产单机游戏《仙剑奇侠传三》改编的同名古装玄幻电视剧,由上海唐人电影制作有限公司出品,胡歌、霍建华、杨幂、唐嫣、刘诗诗等联袂主演,该剧于2009年第一次上映,虽然是写着三但实际与前两部并没有关系,有觉得剧不错的可以去看一下仙剑奇侠传一,与本剧略微有些关系。
该剧讲述了渝州城永安当的小伙计景天和唐门大小姐雪见受到两人随身玉佩的彼此吸引,他们二人“热闹而又尴尬”地相识了,成了一对欢喜冤家。其实雪见和景天正是彼此的有缘人,而他们都来历不凡,身藏几世的秘密,随着雪见家族的剧变,二人阴差阳错地步入了江湖的血雨腥风之中,并结识了徐长卿、紫萱和龙葵等,众人走上了协助蜀山寻找五灵珠,封印锁妖塔的漫漫征途。在这个过程中,众人互相扶持,患难与共,历经重重磨难,终于获得五灵珠,战胜了邪剑仙,维护了人间的和平。
仙剑三,人间值得,本人已经不知道刷了多少次,在那个时代这样的特效放到现在来看依旧不过时。这部电视剧虽然是由游戏改编而成,更是为了游戏宣传而作,但很多人都以为先有的电视剧后有的游戏,最后导致多数人大骂游戏胡乱改编。
基本上所有主演(包括但不限于:景天-胡歌、雪见-杨幂、徐长卿-霍建华、龙葵-刘诗诗、紫萱-唐嫣、重楼、许茂山、邪剑仙、云霆、花楹)只有胡歌是原声。
而且剧中很多主演命名方式都是药名,例如:
景天,中药名,为景天科植物八宝的全草;
飞蓬:味辛,性凉,有辛凉解表的作用;
徐长卿 ,竹叶细辛,多年生直立草本;
雪见,别名 雪见草、癞蛤蟆草、青蛙草、皱皮草;龙葵,一年生草本植物;
花楹,又名凤凰木,是观赏树木;
重楼,一般重楼叶5-9,通常7片,轮生于茎顶,壮如伞,其上生花1朵,花梗青紫色或紫红色,故称七叶一枝花,是百合科植物重楼的根茎。
《黑镜》,又名《Black Mirror》,该片目前共六部(五季+圣诞特别篇),第一季在2011年12月播出,第二季2013年2月13日播出,圣诞特辑在2014年12月6日播出,第三季在2016年10月12日开播,第四季与2017年12月29日播出,第五季与2019年6月5日开播。
该剧分别以多个建构与现代科技甚至是未来科技的背景下,暗黑讽刺风格的独立故事,讲述了人性在科技的发展过程中是如何被利用、重构与破坏。
虽然故事情节略显夸张,但看完后细细品味,可不正是现代社会被科技支配下的缩影。科技是放大镜,放大了我们幸福的同时也毫不掩饰的将人性丑陋的一面展示在众人面前。有些剧情中本来主人公本来带着必死的决心去批判、唤醒当前的社会,可最终啼笑皆非的是他自己也成为了自己厌恶的那种作秀的人。
注意:此剧剧情非常压抑,甚至有些恶心,与正常电视剧发展迥然不同,大多数以黑暗为主,心理适应能力差者慎看!!!
等待更新……
《生化危机》改编自游戏《生化危机》,又名《Resident Evil》,相信这部片子大家都耳熟能详了,可以说是百看不厌。
第一部《生化危机》于2002年上映,先后推出了《生化危机:启示录》(2004年)、《生化危机:灭绝》(2007)、《生化危机:战神再生》(2010年)、《生化危机:惩罚》(2012年),《生化危机:终章》(2017年)为该系列电影终结篇。
内容方面:故事发生在安布雷拉(保护伞)公司的生物工程实验室——“蜂巢”里,数百名遗传学、生物工程学专家正在进行一项科学研究,一种病毒突然爆发了并迅速传播着,而超级计算机“火焰女皇”为了控制病毒不让其外泄到地面上,将蜂巢全部封闭,但病毒很快感染了所有的工作人员并感染了全世界,人们一但被他们咬伤或被抓伤就会受到感染,甚至立即变成丧尸。然后整个故事是以有病毒抗体的艾丽丝为视角,克服各种突发事件,最后抢夺抗体成功,拯救世界的故事。
等待更新……
理由:可以跟踪每行代码的git提交修改记录。
而且可以追溯这个文件所有提交记录
中文简体语言包
用于生成文件头部注释和函数注释的插件
简单来说就是,攻击者通过一些技术手段欺骗用户通过浏览器去访问一个,自己已经认证过(登陆过,留下过登录验证信息)的网站,进行一系列操作(例如:发邮件,发消息,甚至财产操作和转账),所以被访问的网站会认为是真正的用户操作而去运行。
简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求是用户自愿发出的。
假设:
假如把1000元钱转账给shx的链接为:
https://www.bank.com/withdraw?amount=1000&for=shx
那么,一个恶意攻击者top可以在另外一个网站上设置如下链接:
https://www.bank.com/withdraw?amount=1000&for=top
如果用户登陆过账号不久,登录信息尚未过期,并且被攻击者骗取打开此链接,那么shx就有可能会损失1000元钱。
①检查Referer字段:
HTTP头中有一个Referer字段,这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时,通过此字段获取发送请求的网址,并传递给服务器端,这时候服务器就能识别出是否为恶意访问。
这种办法简单易行,工作量低,仅需要在关键访问处增加一步校验。但这种办法也有其局限性,因其完全依赖浏览器发送正确的Referer字段。虽然http协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,亦无法保证浏览器没有安全漏洞影响到此字段。并且也存在攻击者攻击某些浏览器,篡改其Referer字段的可能。
②添加校验token:
由于CSRF的本质是利用存储在浏览器中的验证数据欺骗用户去访问攻击者设置的地址,只要用户提供的验证数据不存储在浏览器中,并且攻击者无法伪造验证数据作为效验,那么攻击者就无法运行CSRF攻击。
所以这种验证数据一般是由服务器生成,将其放在请求的返回值中,其内容是一个伪随机码,当客户端提交数据时,将这个伪随机码一并提交上去做校验。
当用户正常访问时,客户端能接受并返回这个随机码,而通过CSRF传来的欺骗性攻击中,攻击者无法事先得知或伪造这个伪随机码,服务器就会因为token的值为空或者错误,拒绝这个可疑请求。
③在 HTTP 头中自定义属性并验证:
这种方法本质也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。
然而这种方法的局限性非常大。XMLHttpRequest 请求通常用于 Ajax 方法中对于页面局部的异步刷新,并非所有的请求都适合用这个类来发起,而且通过该类请求得到的页面不能被浏览器所记录下,从而进行前进,后退,刷新,收藏等操作,给用户带来不便。另外,对于没有进行 CSRF 防护的遗留系统来说,要采用这种方法来进行防护,要把所有请求都改为 XMLHttpRequest 请求,这样几乎是要重写整个网站,这代价无疑是不能接受的。
XSS攻击通常是指利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,当HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。
①由于XSS攻击在用户当前使用的应用程序中执行,用户将会看到与其有关的个性化信息,如账户信息或“欢迎回来”消息,克隆的Web站点不会显示个性化信息。
②通常,在钓鱼攻击中使用的克隆Web站点一经发现,就会立即被关闭。
③许多浏览器与安全防护软件产品都内置钓鱼攻击过滤器,可阻止用户访问恶意的克隆站点。
④如果客户访问一个克隆的Web网银站点,银行一般不承担责任。但是,如果攻击者通过银行应用程序中的XSS漏洞攻击了银行客户,则银行将不能简单地推卸责任。
①持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。
②非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
③DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。
基于DOM的XSS漏洞是指受害者端的网页脚本在修改本地页面DOM环境时未进行合理的处置,而使得攻击脚本被执行。在整个攻击过程中,服务器响应的页面并没有发生变化,引起客户端脚本执行结果差异的原因是对本地DOM的恶意篡改利用。
①盗用cookie,获取敏感信息。
②利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
③利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
④利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
⑤在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。
①不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、REFER、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。尽量采用POST而非GET提交表单;对“<”,“>”,“;”,“””等字符做过滤;任何内容输出到页面之前都必须加以en-code,避免不小心把htmltag显示出来。
②实现Session 标记(session tokens)、CAPTCHA(验证码)系统或者HTTP引用头检查,以防功能被第三方网站所执行,对于用户提交信息的中的img等link,检查是否有重定向回本站、不是真的图片等可疑操作。
③cookie 防盗。避免直接在cookie中泄露用户隐私,例如email、密码,等等;通过使cookie和系统IP绑定来降低cookie泄露后的危险。这样攻击者得到的cookie没有实际价值,很难拿来直接进行重放攻击。
④确认接收的内容被妥善地规范化,仅包含最小的、安全的Tag(没有JavaScript),去掉任何对远程内容的引用(尤其是样式表和JavaScript),使用HTTPonly的cookie。
ab是:
ApacheBench命令的缩写。
ab的原理:
ab命令会创建多个并发访问线程,模拟多个访问者同时对某一个URL地址进行访问。(它的测试目标是基于url的,因此,它既可以用来测试安排车的负载压力,也可以测试Nginx、lighthttp、Tomcat、IIS等其他web服务器的压力)
ab命令注意事项:
ab命令对发出负载的计算机要求很低,它既不会占用很高的CPU,也不会占用很多内存。但却会给目标服务器造成巨大负载,其原理类似cc攻击。自己测试使用一定要注意,负责一次上太多负载。可能会造成目标服务器资源耗完,严重时甚至导致死机。
使用:
在windows系统下cmd进入Apache安装路径,在bin目录下有一个ab.exe可执行文件,执行ab命令(注意:直接双击是无法正确运行的),直接键入ab回车,可以看到帮助提示。
ab常用参数:
-n:总共请求执行次数,缺省是1;
-c:并发数,缺省是1;
-t:测试所进行的总时间,单位是秒,缺省是50000s;
-p:POST时的数据文件;
-w:以HTML表的格式输出;