我正在http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/学习登录系统。
我想问一下,uniqid(”, true)
的主要功能是什么?
网站上的教程说
“用户唯一ID - 我使用uniqid(”,true)函数在php中生成唯一用户ID。示例用户ID将类似于4f074eca601fb8.88015924“
为什么必须生成用户ID?为了安全还是为了什么?
非常感谢你们。
这是我的数据库的 mysql 查询。
create table users(
uid int(11) primary key auto_increment,
unique_id varchar(23) not null unique,
name varchar(50) not null,
email varchar(100) not null unique,
encrypted_password varchar(80) not null,
salt varchar(10) not null,
created_at datetime,
updated_at datetime null
); /** Creating Users Table **/
答案 0 :(得分:1)
也许这个unique_id用于数据提交。例如,提交带有ajax的表单可能需要提交它的人的用户ID,因此为了防止黑客更改发送到服务器的数据,使用唯一ID来使更改几乎无用因为他们不知道模式人们如何分配ID。另一个原因,唯一身份证可能有用,它可能会在网址中用来显示某人的个人资料。示例:profile.php?id = unique_long_id 这可以防止人们知道网站中存在多少用户... 您可以通过无限的方式使用独特的ID进行创作:)
答案 1 :(得分:0)
通常,使用类似“复杂”(不了解auto_increment事件)id的内容,这样任何用户都无法猜出其他用户的id。
如果你使用像uid这样的东西(主键auto_increment列),很容易猜到用户存在第145,146号......。用户可能会试图强行执行一些操纵id的请求。
在一个编码错误的网站中,您在更新值之前没有进行任何安全检查,我们假设您有此URL来更新密码:http://example.com/update_password?uid=150&password=trolling
。容易更改任何用户密码吗?但是使用unique_id,它更复杂。
现在为什么uniqid('',true)中的2个参数?因为来自手册:
/* We can also activate the more_entropy parameter, which is
* required on some systems, like Cygwin. This makes uniqid()
* produce a value like: 4b340550242239.64159797
*/