我有一个简单的朋友请求系统,其中用户点击包含目标用户的user_id的按钮,该id被传递给在DB中创建请求行的函数。
我不希望用户能够以朋友的身份请求任何user_id,只是我建议的那些。
因此我需要一种方法来屏蔽user_id,以便恶意用户不会开始插入数字并使用自动工具发送请求。
我想到了一个简单的乘法系统。所以我取user_id * really_long_number而不是请求函数,我除以相同的数字。恶意用户不知道此really_long_number的值,因此不知道user_id。
所以如果:
user_id = 1
really_long_number = 12345678
key = 12345678
但我认为这种策略不是最好的,通过查看系统生成的足够数字可以很容易地推断出来。
你有什么建议?
答案 0 :(得分:0)
您想拥有的是每个用户不可猜测的uniq密钥,然后将其传递给您的按钮而不是用户ID。您可以在用户表中添加一个字段,例如myuniqkey
,在创建用户时会填充类似的字段:
hash('sha512', uniqid().'myappsecretpass');