Php 如何验证发送到服务器的机密?
我不记得以前是怎么做的,但我已经做了,不知道是否有人能帮我Php 如何验证发送到服务器的机密?,php,http,php-5.3,Php,Http,Php 5.3,我不记得以前是怎么做的,但我已经做了,不知道是否有人能帮我 我使用带有URL中某些参数的GET请求将数据发布到另一个页面。我想在接收端验证参数。上一次我是通过添加一个秘密然后对其进行散列来实现的,但现在我记不起来是如何实现的。如果您正在验证参数是否来自您希望它们来自的源,即:我只接收来自page1.php的用户的参数,下面是您要做的 用户转到page1.php,将生成一个令牌并将其放入其$\u会话中。哈希标记被添加到page1.php(或link,或其他)上的表单中 用户将参数发送到page2.
我使用带有URL中某些参数的GET请求将数据发布到另一个页面。我想在接收端验证参数。上一次我是通过添加一个秘密然后对其进行散列来实现的,但现在我记不起来是如何实现的。如果您正在验证参数是否来自您希望它们来自的源,即:我只接收来自page1.php的用户的参数,下面是您要做的
GET
值的散列。这种方法的优点是链接(如果要发布的话)是“完整的”,即您不需要通过活动会话等依赖其他数据。换句话说,这个链接有自己的验证信息
我想这样做:
计算哈希值
GET
键和值的数组进行排序(因为应该忽略参数顺序,例如,?a=1&b=2
产生与?b=2&a=1
相同的散列)hashFunc(concat(GETArray,fixedSalt))
hash
添加到GET
参数中hash
参数并对剩余的GET
键和值数组进行排序GET
参数中的值匹配示例:
a=1
,b=2
- 排序数组:
array('a'=>1,'b'=>2)代码>
- 散列:
(通过xyz
和sortedArray
的concat上的'mySa1t'
)hashFunc()
- 获取参数:
,请参阅?a=1&b=2&hash=xyz
- 散列:
,剩余的GET数组,排序:xyz
array('a'=>1,'b'=>2)代码>
- 计算哈希:
(通过xyz
和srecievedSortedArray
'mySa1t'的concat上的
)hashFunc()
=xyz
,耶李>xyz
您必须验证您的参数,而不是这种散列 免责声明:以上步骤有点冗长。根据构建链接(查询)和接收数据的方法(
GET
parameters),某些步骤可能会被忽略。使用google for CSRF-以前已经讨论过很多次了。注意Chris Schifflett和Stefan Esser的作品(尽管Chris的CSRF重定向器有点狡猾)