【问题标题】:What is the best authentication script? [closed]什么是最好的身份验证脚本? [关闭]
【发布时间】:2011-01-19 21:04:51
【问题描述】:

我正计划制作一些动态 PHP 网站,我需要一个免费的身份验证系统,它允许我为这些网站的管理员创建控制面板。 它应该包含:

  • 记住密码
  • 密码丢失
  • 每个特定时间间隔的最大登录尝试次数
  • 用户管理

谢谢。

【问题讨论】:

    标签: php security oop authentication user-management


    【解决方案1】:

    一些安全注意事项: 为了避免很多陷入认证和授权的问题 OWASP webapp 攻击分类列表的分组,使用用户认证 已在您选择的 Web 框架中实现的子系统。他们很可能已经 编写的安全代码涵盖了与身份验证和会话相关的许多问题,并将 可能比您自己滚动的任何东西都安全得多。

    如果您绝对、肯定地必须推出自己的身份验证,或者如果您希望评估另一个身份;那么你/他们必须遵守这些规则。

    • 实现一个适当随机且不可猜测的会话 id,以在会话 cookie 中使用。
    • 不允许强制使用会话 ID。
    • 当权限或凭据发生更改时(例如,用户已升级到更高的安全性,用户已更改其密码)然后 立即使会话无效并开始新的会话。
    • 提供注销功能,并在注销时使会话失效。
    • 将 cookie 设置为 HttpOnly
    • 始终在会话未使用后过期,并且不要通过将用户重新连接到其旧的 http 会话来实现“保持登录”。
    • 确保 2 个会话不能同时具有相同的会话 ID
    • 确保在会话失效时销毁所有会话数据。出现的新用户可能恰好被分配了一个以前使用过的会话 ID。此新会话不得访问之前针对该会话 ID 设置的会话数据。

    【讨论】:

      【解决方案2】:

      有很多脚本可以做到这一点,如果你对 PHP 很认真,你应该能够编写自己的身份验证脚本。

      有大量资源可帮助您开始、查看或简单地在 Google 上搜索“php authentication”(或类似的内容)。

      http://net.tutsplus.com/videos/screencasts/how-to-build-a-login-system-for-a-simple-website/ http://www.devarticles.com/c/a/MySQL/PHP-MySQL-and-Authentication-101/

      但是,您应该始终对在线资源持保留态度,许多人不会触及用户管理的安全方面,例如 XSS 等

      您可能还想查看一些内置身份验证库的 PHP 框架,例如 CakePHPZend Framework

      【讨论】:

        【解决方案3】:

        没有最好的,也没有可以作为脚本的严肃解决方案。身份验证是一项全局策略,因此必须与整个网站集成。要么自己编写代码,要么使用实现它的框架。

        如果您开始编写自己的实现代码,请记住您的第一次尝试只能用于非敏感数据,因为它们会很弱(但对于休闲网站来说已经足够了)。

        Stoosh 有一些您可能想要关注的好线索。

        请记住,这并不像看起来那么简单,显而易见的解决方案可能不太安全。但同样,您可能不需要 CIA 风格的安全性,所以不要紧张,享受学习编程的乐趣

        【讨论】:

          【解决方案4】:

          作为初学者,我建议使用谷歌搜索教程,并考虑使用像 Zend Framework 这样的 PHP 框架。

          身份验证是似乎 90% 的初学者开发人员希望使用预打包解决方案的事情之一,但这些都不够。

          编写自己的代码将提高您作为开发人员的能力,并教您许多核心 Web 开发术语和技术,例如:

          • XSS
          • 加密安全散列
          • HTTPS/SSL
          • CSRF

          【讨论】:

          • 您似乎刚刚建议应该委托“初学者开发人员”正确实施安全加密并保护管理员帐户免受 XSS 和 CSRF。我更多宁愿保护我使用的任何服务上的管理员帐户的代码都是由经验丰富的人编写的,更重要的是,经过一些审查和现场测试。
          • @keturn:你永远不应该仅仅因为你懒惰而依赖预先打包的东西。您应该首先学习该技术,以至于每次都必须重写它变得烦人。只有这样,您才应该寻找一个库,或者最好自己编写一个库。
          • 我非常尊重提出以下形式问题的开发人员:“您是否发现我的身份验证方案有任何问题?”而不是“我如何做最好的登录??!”
          • 我看不出有什么理由每次你想做某事时都重新发明轮子。我不建议使用您遇到的第一个身份验证包 - 先做一些研究以确保您使用的是好的。
          • 我同意了解您使用的工具很重要。如果您对网络安全的危害一无所知,那么您很可能会安装 superLoginPlus 并对您闪亮的安全前门感到满意,只是有人指出您已将钥匙留在锁中.另一方面,如果您编写 myOwnLogin,您可能会犯一些与 superLoginPlus 的作者多年前所犯的错误相同的错误,这些错误已经被捕获并修复。 chargen.matasano.com/chargen/2009/7/22/…
          猜你喜欢
          • 2011-02-20
          • 2023-03-23
          • 1970-01-01
          • 2021-04-05
          • 2023-03-23
          • 1970-01-01
          • 1970-01-01
          • 2011-06-12
          • 2017-06-26
          相关资源
          最近更新 更多