在我的网站上,有一个用户的个人资料页面。我目前正在做的只是通过ID
请求传递用户GET
并使用它来查询用户的详细信息。
因此,用户个人资料网址就像这样......
http://www.example.com/user.php?id=345
所以,我的问题是,在网址中显示此用户的ID(用户表的主键)是否安全,以致任何人都可以看到它??
答案 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;