在没有HTTPS的情况下在PHP和MySQL中创建安全的登录脚本

时间:2014-04-06 11:14:48

标签: php mysql http login https

问题

this post on WikiHow是否可以在PHP和MySQL中创建安全登录脚本?在警告部分,作者强调该代码只能与HTTPS一起使用。我无法使用HTTPS,但需要在PHP和MySQL中实现相对安全的登录脚本,因此想知道脚本是否也可以用于HTTP连接。

解决

第三方解决方案是在PHP和MySQL中创建安全登录脚本的最佳解决方案。通过利用PHP框架(例如Symfony,uLogin)或外部各方(例如Facebook,Google),可以避免创建全新的工作登录脚本和授权( Remember-Me 功能)的需求。如果其他人已经进行了彻底的研究并获得了创建登录功能的经验,那么使用他们的工作会更加安全和容易。

2 个答案:

答案 0 :(得分:7)

虽然您可以自己创建登录系统,但强烈建议外部各方为您执行此操作。

要想做到这一点需要很多经验,而且经常做错了。

虽然教程对我来说没问题,但有很多因素需要考虑,而且它似乎也是半岁的。 PHP 5.5提供password_hashpassword_verify,我建议您推荐使用的页面。

所以,如果你必须建立自己的系统;考虑使用上述功能,如果你只限于较低的php版本,则有backports up to version 5.3.7 available

如果您制作自己的系统,请利用外部各方(Google,Facebook)为您办理登录,或者使用具有authentication support

的框架

所以在它的一般要点中:不要试图自己做,利用其他人提供多年经验的东西。因为要做到这一点非常困难。

答案 1 :(得分:3)

此脚本在其浏览器中安全地加密用户输入的密码,并在表单提交之前清除明文密码字段,因此任何第三方都无法读取密码。在这种程度上,脚本可以通过HTTP安全使用。

但是,表单的其余部分 - 用户名,电子邮件地址等 - 是安全发送的,因此第三方(例如man in the middle)可以识别用户只需阅读表格发送的他/她(非加密)个人身份信息即可。这不仅会使您的用户容易受到攻击,而且对用户数据的不安全处理可能会使您的雇主/客户面临法律风险,以防数据遭到嗅探/入侵/被盗。

还有一个真正的风险,即中间人可以拦截传输的数据并在托管脚本的服务器收到之前对其进行修改。 HTTPS / SSL不仅可以保护密码,还可以确保没有数据被篡改。

正如Zarthus所说,最好的做法是采用第三方解决方案,特别是如果你不能为你提供HTTPS。

相关问题