【问题标题】:PHP Access Database with GET Security具有 GET 安全性的 PHP 访问数据库
【发布时间】:2012-10-28 19:17:56
【问题描述】:

我正在使用 PHP 编写数据库接口。数据库的功能之一是允许会员在线登录和注册活动。我想创建一个 php 文件,该文件将创建一个用户可以订阅的动态日历文件。 www.hostname.net/my_calendar.php?memid=123 的效果。然后,该文件将搜索数据库以查找成员 123 已注册的事件,并即时创建日历文件。我担心为此目的使用会员的身份证号码的安全性。是否有一种以合理的安全性来完成此任务的好方法,或者这里可能存在我没有考虑的安全问题。

【问题讨论】:

  • 你想要保护什么?成员 ID 是否容易被猜到(例如序列号)还是成员 ID 是由加密的强随机数生成器生成的?
  • 这是一个好问题,老实说,我不确定我是否有一个好的答案。我不在乎是否有人可以看到我注册的活动,但其他人可能会。会员 ID 是一个唯一的随机生成的 6 位数字。
  • 直到你知道你在保护什么,你才能说什么是安全的或不安全的。我会首先尝试保持私密,无论合理的用户会认为是私密的。如果你有一个足够大的随机数,那么攻击者必须做很多工作才能找到有效的 ID,这样你就可以依靠随机性来防止猜测,但是 6 个十进制数字还不够大。

标签: php database security get


【解决方案1】:

您不需要这样做my_calendar.php?memid=123。如果用户已登录,您将通过会话或 cookie 跟踪他的用户 ID。因此,您只需/my_calendar.php。这样,用户就无法尝试查看其他人的日历。

【讨论】:

  • 一般来说,我确实使用会话变量来让用户保持登录状态,但我希望用户能够订阅日历,所以当他们没有登录时,他们的日历(例如 Outlook、iCal等)可以根据他们注册的其他事件或协调员所做的更改进行更新。
【解决方案2】:

我不认为会有任何安全问题,但这取决于恶意用户可以使用该 ID 做什么。 例如,StackOverflow 也将用户 ID 用于他们的个人资料,例如 https://stackoverflow.com/users/808723/gamescripting

如果您希望用户只看到自己的事件,那么follow the approach xbonez suggested

【讨论】:

    【解决方案3】:

    您可以尝试对用户的一些公开详细信息进行散列处理。例如,您可以使用此方法http://blog.kevburnsjr.com/php-unique-hash 合并用户的名字/姓氏和他的user_id。这将生成一个类似于cJio3 的哈希值。 user_id 将被混淆。这不会阻止任何黑客进入,但会减慢他们的速度。 :)

    【讨论】:

    • 这就是我所倾向于的;我只是不确定这会牺牲多少效率。但我想安全总是会在某种程度上牺牲效率。谢谢!
    猜你喜欢
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 2016-02-11
    • 2014-09-14
    相关资源
    最近更新 更多