php写接口安全验证的不解?

在使用php写接口的时候,要使用安全验证,也不知道为什么最近想着想着就有点不解了
比如有个接口地址http://test.com/user/list?uid...
上面的3个参数分别是:uid(用户id),token值,sign(这个值是根据前面2个参数在规定的算法下计算出来的)
给了服务器之后,服务器再根据同一个规则计算sign,来验证和传过来的sign是否一致

假如上面的url是正常的,可以拿到数据,如果这个时候这个url被其他人知道了,只要在浏览器运行就可以看到数据了,那么请问这个时候的安全验证有什么作用??

阅读 2.8k
4 个回答

一般接口的安全验证是有公钥和私钥的,只会传送公钥然后通过查找到私钥生成token或者签名 ,而不是像现在这样所有的参数都是明面传输。而且接口验证的是请求身份的正确与否,而不是一个正确的身份请求必须在正确的地方才能得到正确的答案

不论是加密传输还是明文传输,浏览器解析之后都会变成明文数据,这肯定是不可避免的。

要说安全验证有什么作用,那就要解释一下 Token 了,Token 的意思是令牌,通行证,用户获取了 token 之后才能进行相对应的操作,如果没有了 token,那岂不是可以伪造用户请求,肆意操作?

  1. 你可以把当前时间戳也作为参数一起传递,接口方判断请求有效性时额外判断下是否超过预定时间。这样每个接口每过一段时间生成的sign都是不同的。
  2. 还可以加上ip校验,只有指定服务器ip发送的接口请求才进行处理。
新手上路,请多包涵

楼主提到了三个参数。
uid(用户id) 这是普通参数
token值 这是身份验证参数 ==》 登录使用
sign 这是请求签名参数 ==》 防篡改使用

服务端收到请求后。
首先应该是校验sign是否合法。不合法就认为是被篡改的请求了终止服务。
接着验证token,获取用户身份信息。
最后到业务逻辑。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题