Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在配置文件URL中显示用户ID安全吗?_Php_Database_Security - Fatal编程技术网

Php 在配置文件URL中显示用户ID安全吗?

Php 在配置文件URL中显示用户ID安全吗?,php,database,security,Php,Database,Security,在我的网站上,有一个用户的个人资料页面。我目前所做的就是通过一个GET请求传递用户ID,并使用它来查询用户的详细信息 因此,用户配置文件URL如下所示 http://www.example.com/user.php?id=345 所以,我的问题是,在URL中显示此用户的ID(用户表的主键)是否安全,以便任何人都可以看到它 这很正常 但我建议您进行表单验证以防止SQL注入。永远不要相信用户给你的东西 我会用那种表达方式,但另外 if (!preg_match('/^[0-9]+$/', $_GE

在我的网站上,有一个用户的个人资料页面。我目前所做的就是通过一个
GET
请求传递用户
ID
,并使用它来查询用户的详细信息

因此,用户配置文件URL如下所示

http://www.example.com/user.php?id=345
所以,我的问题是,在URL中显示此用户的ID(用户表的主键)是否安全,以便任何人都可以看到它

这很正常

但我建议您进行表单验证以防止SQL注入。永远不要相信用户给你的东西

我会用那种表达方式,但另外

if (!preg_match('/^[0-9]+$/', $_GET['id']))  { 
    echo 'ID disallowed.';
}
或有数字限制(匹配1到999999)


如果您不清理传入的数据,它将是。一般来说,系统本身不易受攻击,只是为第三方公开ID,不多也不少。作为建议,您可以在数据库中使用hash作为
id
(对于糟糕的肮脏示例md5(
email
+salt)或类似的东西)。因此,这就像在一个看起来确实这样做的网站上显示
?id=123
一样具有讽刺意味。(stackoverflow.com/users/3844510)@tharinduluck没关系,客户端不能直接写入PHP会话数据。客户端最多可以更改PHPSESSID,但这是一个很长的哈希,不太可能与另一个活动会话匹配。@UmairKhan当然可以-但这是代码的安全问题。公开用户ID(正如OP所要求的)不应该增加被黑客攻击的风险。
if (!preg_match('/^[0-9]{1,6}$/', $_GET['id']))  {
    echo 'ID disallowed.';
}