在个人资料网址中显示用户ID是否安全?

时间:2016-05-12 15:57:28

标签: php database security

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

因此,用户个人资料网址就像这样......

http://www.example.com/user.php?id=345

所以,我的问题是,在网址中显示此用户的ID(用户表的主键)是否安全,以致任何人都可以看到它??

1 个答案:

答案 0 :(得分:1)

这是正常的。

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

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

if (!preg_match('/^[0-9]{1,6}$/', $_GET['id']))  {
    echo 'ID disallowed.';
} 

或有数字限制(匹配1到999999)

;WITH CTE_UserAccounts AS (
    SELECT t1.user_id, SUM(
        CASE
            WHEN t2.free_paid = 'P'
                THEN 1
            ELSE 0
        END ) as highest
    FROM users t1 INNER JOIN accounts t2
        ON t1.user_id = t2.user_id
    WHERE t2.account = 'A'
    GROUP BY t1.user_id
)
SELECT
    COUNT(CASE WHEN highest > 0 THEN 1 END) AS [Paid],
    COUNT(CASE WHEN highest = 0 THEN 1 END) AS [Free]
FROM 
    CTE_UserAccounts;