网页制作与网站制作,做网站放网站广告,班级网站建设规划书,怎样黑进别人的网站一.AccessKeySecretKey (开放平台)1、请求身份为开发者分配AccessKey(开发者标识#xff0c;确保唯一)和SecretKey(用于接口加密#xff0c;确保不易被穷举#xff0c;生成算法不易被猜测)。2、防止篡改参数签名#xff1a;(1)按照请求参数名的字母升序排列非空请求参…一.AccessKeySecretKey (开放平台)1、请求身份为开发者分配AccessKey(开发者标识确保唯一)和SecretKey(用于接口加密确保不易被穷举生成算法不易被猜测)。2、防止篡改参数签名(1)按照请求参数名的字母升序排列非空请求参数(包含AccessKey)使用URL键值对的格式(即key1value1key2value2…)拼接成字符串stringA(2)在stringA最后拼接上Secretkey得到字符串stringSignTemp(3)对stringSignTemp进行MD5运算并将得到的字符串所有字符转换为大写得到sign值。请求携带参数AccessKey和Sign只有拥有合法的身份AccessKey和正确的签名Sign才能放行。这样就解决了身份验证和参数篡改问题即使请求参数被劫持由于获取不到SecretKey(仅作本地加密使用不参与网络传输)无法伪造合法的请求。3、重放攻击虽然解决了请求参数被篡改的隐患但是还存在着重复使用请求参数伪造二次请求的隐患。timestampnonce方案nonce指唯一的随机字符串用来标识每个被签名的请求。通过为每个请求提供一个唯一的标识符服务器能够防止请求被多次使用(记录所有用过的nonce以阻止它们被二次使用)。然而对服务器来说永久存储所有接收到的nonce的代价是非常大的。可以使用timestamp来优化nonce的存储。假设允许客户端和服务端最多能存在15分钟的时间差同时追踪记录在服务端的nonce集合。当有新的请求进入时首先检查携带的timestamp是否在15分钟内如超出时间范围则拒绝然后查询携带的nonce如存在已有集合则拒绝。否则记录该nonce并删除集合内时间戳大于15分钟的nonce(可以使用redis的expire新增nonce的同时设置它的超时失效时间为15分钟)。4、实现请求接口http://api.test.com/test?namehellohomeworldworkjava客户端(1)生成当前时间戳timestampnow和唯一随机字符串noncerandom(2)按照请求参数名的字母升序排列非空请求参数(包含AccessKey)stringAAccessKeyaccesshomeworldnamehelloworkjavatimestampnownoncerandom;(3)拼接密钥SecretKeystringSignTempAccessKeyaccesshomeworldnamehelloworkjavatimestampnownoncerandomSecretKeysecret;(4)MD5并转换为大写signMD5(stringSignTemp).toUpperCase();(5)最终请求http://api.test.com/test?namehellohomeworldworkjavatimestampnownoncenoncesignsign;服务端省略二.TokenAppKey(APP)在APP开放API接口的设计中由于大多数接口涉及到用户的个人信息以及产品的敏感数据所以要对这些接口进行身份验证为了安全起见让用户暴露的明文密码次数越少越好然而客户端与服务器的交互在请求之间是无状态的也就是说当涉及到用户状态时每次请求都要带上身份验证信息。1、Token身份验证(1)用户登录向服务器提供认证信息(如账号和密码)服务器验证成功后返回Token给客户端(2)客户端将Token保存在本地后续发起请求时携带此Token(3)服务器检查Token的有效性有效则放行无效(Token错误或过期)则拒绝。安全隐患Token被劫持伪造请求和篡改参数。2、TokenAppKey签名验证与上面开发平台的验证方式类似为客户端分配AppKey(密钥用于接口加密不参与传输)将AppKey和所有请求参数组合成源串根据签名算法生成签名值发送请求时将签名值一起发送给服务器验证。这样即使Token被劫持对方不知道AppKey和签名算法就无法伪造请求和篡改参数。再结合上述的重发攻击解决方案即使请求参数被劫持也无法伪造二次重复请求。3、实现省略