前端的签名验证是不是需要PHP后台事先传递签名过去?

xianyushen 2016-10-25 10:03:22
我正在做一个网页商城的项目.现在在验证签名这里遇到了一些问题,希望各位前辈能给予提示或者指正.现在是不知道如何保证服务器接收请求是由正确的用户发出的,而不是伪造的?

我现在的想法是这样的,每个url后面都加上当前的时间戳和sign值,在请求中作为参数发送给服务器.服务器首先判断时间戳,如果距离当前时间超过10分钟则判断这个请求已经过期,需要重新发送请求.

但是我不知道前端的sign值如何获取.以前做app的时候,sign可以按照MD5(订单号+用户ID+时间戳+其他盐)的方式,在app内部完成,外部无法看到具体的加密方法.但是现在这个前端几乎全部是开放的,用JS做加密别人也能看到.

我也想让前端直接从服务器获取现成的sign签名和时间戳,但是同样的.这个请求sign签名的url也无法验证用户的唯一性,数据的准确性.别人改下url中的订单号,照样能拿到对应的sign值.

那么,这种前端验证到底该怎么做呢?
...全文
464 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
walk walk 2016-10-25
  • 打赏
  • 举报
回复
和你做app一样的道理,sign是通过php程序生成的,不是js 前端可以看到的只是sign的一串字符,但前端浏览的人不知道这串字符 和 订单号的转换方法,如果前端某人改了sign值,同时改了订单号,在后端验证的时候 肯定通不过的。 比如 PHP生成的页面 a.php?order=123&time=456&sign=abcdef 别人知道这个地址,他可以改order和sign,但改了之后,后端接收判断肯定验证不过,因为他不知道order和sign之间的关系
xianyushen 2016-10-25
  • 打赏
  • 举报
回复
引用 1 楼 dongtest 的回复:
和你做app一样的道理,sign是通过php程序生成的,不是js 前端可以看到的只是sign的一串字符,但前端浏览的人不知道这串字符 和 订单号的转换方法,如果前端某人改了sign值,同时改了订单号,在后端验证的时候 肯定通不过的。 比如 PHP生成的页面 a.php?order=123&time=456&sign=abcdef 别人知道这个地址,他可以改order和sign,但改了之后,后端接收判断肯定验证不过,因为他不知道order和sign之间的关系
谢谢解惑.但是我还是有点不明白的地方.照您所说,sign值是php后台生成的,那应该也是需要后台把这个sign值传递给前台,然后前端在把这个sign当做参数,来发送请求. 比如我打开一个订单详情页,后台传递过来sign值,这个sign值是根据当前订单号在后台经过一系列计算生成的.但如果我在打开这个详情页的url上,把订单号换成其他的号码,那么返回过来的不也是改过后的订单号所对应的sign值吗? 我主要是迷惑,在 a.php?order=123&time=456&sign=abcdef 这个地址里,sign=abcdef 是如何获取的,后台传递给前台的话,如何防止别人伪造其他订单号而直接获取相对应的的sign值? 忘说了,我用的是thinkPHP框架,第一次搞这个..有点搞不懂..

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧