PHP设置安全问题

标签 php mysql security

我用谷歌搜索了一段时间,但没能找到这个问题的答案。

我正在尝试建立一个网站,让用户在注册时为其帐户设置安全问题和答案(这部分我可以毫无问题地管理)。我不知道该怎么做,让网站在用户登录时识别用户的计算机,这样他们就不必在每次登录时回答问题。

我无法通过 IP 地址执行此操作,因为某些提供商会经常更改用户的公共(public) IP(我的提供商似乎每小时都会更改我的公共(public) IP)。

有没有办法通过 MAC 地址或特定机器或设备的一些唯一标识符来做到这一点。这样,如果“Joe”创建了一个帐户,但他的室友“Bob”尝试从同一房屋/公寓中的另一台计算机或设备进入他的帐户,它会向“Bob”询问问题,而不是向“Joe”询问因为它识别了他的设备?

希望我能把我想做的事情说清楚。

最佳答案

I am trying to set up a site that has the user setup security questions and answers for their account upon registration (This part I can manage without issue).

这是a bad design ,并导致类似 the time Governor Sarah Palin's email was hacked via password reset questions 的情况.

Is there a way to do it via MAC Address or some unique identifier for their specific machine or device.

不会,您的本地 MAC 地址不会传输到远程服务器。任何其他此类硬件标识符都很容易被欺骗。

What I can't figure out how to do is have the site recognize the user's computer when they go to log in so they don't have to answer the questions each time they log in.

在这种情况下,您想要的是 long-term authentication cookies 的轻微变体这用于部分验证用户身份,因此他们不需要采取额外的安全措施。

通常,我链接到的设计是“在这台计算机上记住我”复选框,即使用户关闭浏览器,网站也会自动登录。但是,您可以重新调整它的用途来解决此类问题。

但是,我强烈建议不要打扰安全问题。您是否考虑过使用双因素身份验证(FIDO U2F 或 TOTP;切勿短信)作为额外的安全层,而不是容易破解的安全问题?

关于PHP设置安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46875030/

相关文章:

php - Javascript 在方法中提交表单

php - 如何从 PHP 中的数组中删除重复值

尽管设置了默认值,但 MySQL 错误列不能为空

mysql不喜欢不行

php - 在 PostPersist、PostUpdate 事件中保留对象

java - servlet 发生 mySql 列未找到错误

php - 在 PHP 中创建一次性使用的安全 token 的最佳方法是什么?

api - 3rd 方 API 如何防止 API 报价被盗?

ios - iOS Secure Enclave 中可以存储多少个 key ?

php - 通过急切加载循环关系