有没有什么思路可以防止伪造请求

2015-04-17 15:32:02 +08:00
 whatisnew

为了防止伪造请求,想了各种办法,唉。。。
像服务器端拿到 uuid 之后怎么验证这个 uuid 是正确的呢?
比如有没有一个什么标准数据库可以检查 uuid 是正确的。

或者有别的什么思路可以解决伪造请求的问题。。。像微信这种是怎么做的呢

5332 次点击
所在节点    iOS
43 条回复
whatisnew
2015-04-17 15:34:47 +08:00
检查ip地址+token不现实
检查 uuid 其实吧 uuid 也可以伪造

真心头大
whatisnew
2015-04-17 15:35:27 +08:00
单独 token 更容易伪造
whosesmile
2015-04-17 15:42:56 +08:00
不太理解 单独 token更容易伪造是什么意思?

常见的思路都是form表单提交的时候同时提交token, token生成的机制是这样:
服务器端设置一个任意的字符串作为秘钥,简称为secretkey, 然后将用户的某个不可变信息+secretkey做md5或者sha加密,然后服务器接收到请求的时候,自己算一次,然后匹配这个token是否一致,如果你觉得依然不够安全,就将token在做一个时效性。

前提是你的secretkey一定要足够安全。
whatisnew
2015-04-17 15:54:27 +08:00
@whosesmile 问题是客户端的任何信息都不可信

其实可以这么理解:
如何区别一个请求是由机器(工具或者什么软件之类的)发出的,还是正常的用户发出的。


因为我发现机器伪造成正常用户太简单了,而我们好像没有什么好办法去鉴定这个。
clino
2015-04-17 16:00:25 +08:00
"如何区别一个请求是由机器(工具或者什么软件之类的)发出的,还是正常的用户发出的。"
这个应该是无法区分的吧...

应该还是要从行为上来区分比较靠谱哈
whatisnew
2015-04-17 16:02:04 +08:00
@clino 腾讯这个鬼怎么做的,像微信这种。
virusdefender
2015-04-17 16:06:28 +08:00
过年的时候想过这个问题,只能无限的增大难度,基本无解。
whatisnew
2015-04-17 16:07:07 +08:00
@whosesmile 就算你通过了这一步验证,你返回回去的 token 认证信息,他拿到之后,再用机器请求这个 token 是一样的效果。。。比如 12306 通过他那个验证码之后,拿到 token 值,就可以任意买票了。
virusdefender
2015-04-17 16:07:32 +08:00
最主要原因客户端是可以被反编译和被抓包的。服务器和服务器之间的通信保证安全应该还是比较简单的。
whatisnew
2015-04-17 16:09:26 +08:00
@virusdefender 我和你一样,吃饭的时候都在想,最后采用了严格的注册机制比如绑定手机+身份证人肉认证+资源限制的方式,去解决的。
whatisnew
2015-04-17 16:11:34 +08:00
@virusdefender 是啊。其实我们现在采用的方式稍微安全一些,但是有些机器不停的扫用户密码,验证错误超过5次账号锁定了ip屏蔽了,有正常的用户就来找我们怎么登录不了了。。。我晕死
whatisnew
2015-04-17 16:14:30 +08:00
@clino 行为上的话,比如 ios 他打开应用肯定就是直接点登陆按钮啊。那么机器也是一样。。。
如果他已经登录过了,那么就直接鉴权+获取资源了。问题是鉴权用的 key+token 被机器拿到一样可以获取资源。。。
kemingcao
2015-04-17 16:25:49 +08:00
以前也想过,此问题无解 ; )
pi1ot
2015-04-17 16:31:57 +08:00
提高伪造成本,降低伪造收益,HTTP层面杜绝是不可能的。
whatisnew
2015-04-17 16:40:27 +08:00
@pi1ot 所以我很好奇像微信、支付宝这种是怎么做的。。。
clino
2015-04-17 16:41:01 +08:00
"验证错误超过5次账号锁定了ip屏蔽了"不锁定帐号屏蔽IP而是强制需要验证码? 这样会不会友好些
或者对异常ip限制请求频率
xenme
2015-04-17 16:44:39 +08:00
两个人用一台电脑,公用一个账号密码,你怎么区分是一个人还是两个人?
增加注册难度,比如绑手机,帮身份证啥
增加单位时间的限制(一段时间内只能访问多少资源,人的话一般有个限度)
变态点的,每次操作都搞一个验证码,机器不会烦死,人肯定烦死了。
whatisnew
2015-04-17 16:44:40 +08:00
@clino 这个本来就有验证码的。错误2次就会出现验证码。再错3次就锁定。24小时候后自动解锁。
whatisnew
2015-04-17 16:46:39 +08:00
我分析日志,各国的ip都有,各种ip,一部分还是连号的,不知道我们是不是被什么组织盯上了。
ip 那么容易伪造吗?
whosesmile
2015-04-17 16:49:42 +08:00
@whatisnew 我明白你的意思了,但是不太懂你具体要做什么?类比微信、支付宝的某个业务,你可以举个例子么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/184362

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX