首页 文章

我应该如何为CodeIgniter选择身份验证库? [关闭]

提问于
浏览
381

我看到有a few . 哪些是维护和易于使用?它们的优缺点是什么?

11 回答

  • 35

    我遇到过Flexi Auth(http://haseydesign.com/flexi-auth/) . 它看起来非常有前途,我已经开始使用它了 . 它有奇妙的功能 . 与CI完全集成,并带有两个不同的库文件,其中一个是非常繁重的所有功能,另一个只包含验证 .

    其中一个最好的是新注册的会员在网站上获得一段时间的临时访问权限,直到他们点击他们的电子邮件中的链接并激活 .

  • 2

    也许你会发现Redux适合你的需求 . 它没有矫枉过正,只有我们大多数人需要的裸机功能 . 开发人员和贡献者对所贡献的代码非常严格 .

    这是official page

  • 3

    我正在尝试Ion_Auth并欣赏它,顺便说一下......

    SimpleLoginSecure 使身份验证简单而安全 .

  • 12

    另外看看BackendPro

    最终你可能最终会写一些自定义的内容,但从DX Auth,Freak Auth,BackendPro等借用概念并没有错 .

    我对打包应用程序的体验是它们特定于某些结构,并且我在将它们集成到我自己的应用程序中时遇到问题而不需要黑客攻击,那么如果预包装有更新,我必须将它们迁移进去 .

    我也在我的CI代码中使用了Smarty和ADOdb,所以无论如何我总是会做出重大的代码更改 .

  • 55

    Tank Auth看起来不错,但文档只是一页的解释,如何安装,以及每个PHP文件的快速运行 . 至少这是我在谷歌搜索后发现的全部内容 . 当他们说Tank Auth有充分记录时,可能是人们的意思是代码得到充分评论 . 这是一件好事,但与文档不同 . 如果有一些关于如何将Tank Auth的功能与现有代码集成的文档会很不错 .

  • 29

    我使用DX Auth的定制版本 . 我发现它使用起来很简单,非常容易修改,它的user guide (with great examples)与Code Igniter非常相似 .

  • 5

    请注意,Jens Roland的“综合列表”不包括用户角色 . 如果您对分配不同的用户角色感兴趣(例如admin / user或admin / editor / user),这些库允许:

    • Ion_Auth(重写Redux)

    • Redux

    • 后端Pro

    Tank_Auth(Jens列表中的#1以上)没有用户角色 . 我意识到这不完全是认证的一部分,但从那以后

    • 身份验证和角色管理都在页面加载时处理

    • 两者都涉及安全问题

    • 两者都可以使用相同的表/模型 .

    • 两者都可以设置为在控制器构造函数中加载(甚至自动加载)

    如果你需要的话,让一个库同时处理它会很有意义 . 因为这个原因,我正在切换到Tank_Auth的Ion_Auth .

  • 12

    Ion_auth!看起来很有前途,占地面积小!我喜欢..

    http://github.com/benedmunds/CodeIgniter-Ion-Auth

  • 7

    Ion_Auth击败tank_auth主要有两个原因,用户角色和文档,tank_auth中缺少这两个 .

  • 456

    更新(2010年5月14日):

    It turns out, the russian developer Ilya Konyukhov picked up the gauntlet after reading this and created a new auth library for CI based on DX Auth, following the recommendations and requirements below.

    And the resulting Tank Auth is looking like the answer to the OP's question. I'm going to go out on a limb here and call Tank Auth the best authentication library for CodeIgniter available today. It's a rock-solid library that has all the features you need and none of the bloat you don't:

    Tank Auth

    专业版精选Lean足迹(20个文件)考虑功能设置非常好的文档简单而优雅的数据库设计(仅4个DB表)大多数功能都是可选的,易于配置语言文件支持reCAPTCHA支持挂钩到CI的验证系统激活电子邮件用电子邮件登录,用户名或两者(可配置)未激活的帐户自动过期简单但有效的错误处理使用phpass进行散列(以及在数据库中散列自动登录代码)不使用安全问题分离用户和配置文件数据非常好非常合理的安全模型失败的登录尝试(对机器人和DoS攻击的良好保护)(次要)缺失密码代码不会在数据库中散列包含本机(差)CAPTCHA,这对那些不想依赖它的人来说很好(Google拥有)reCAPTCHA服务,但它确实不够安全非常稀疏的在线文档(这里的小问题,因为代码很好地记录和直观)

    Download Tank Auth here


    原始答案:

    我也实现了自己的(目前大约80%在完成几周后完成) . 我先尝试了所有其他人; FreakAuth Light,DX Auth,Redux,SimpleLogin,SimpleLoginSecure,pc_user,Fresh Powered等等 . 他们都没有达到标准,IMO,要么他们缺乏基本功能,本身就是不安全,或者根据我的口味过于臃肿 .

    实际上,当我测试它们时(在新年之后),我对CodeIgniter的所有认证库进行了详细的综述 . FWIW,我会和你分享:

    DX Auth

    优点非常全功能中等占用空间(25个文件),但设法感觉非常苗条优秀的文档,虽然有些是略有的破坏的英语语言文件支持reCAPTCHA支持Hooks进入CI的验证系统激活电子邮件未激活的帐户自动过期建议grc.com查找盐(对PRNG来说不错)禁止使用存储的“reason”字符串简单而有效的错误处理缺点只允许用户重置'丢失的密码(而不是让他们在重新激活时选择一个新密码)Homebrew伪事件模型 - 好意,但是错过了标记用户表中的两个密码字段,坏样式使用两个单独的用户表(一个用于'temp'用户 - 模糊和冗余)使用可能不安全的md5哈希失败登录尝试仅由IP存储,而不是用户名 - 不安全!自动登录密钥没有在数据库中进行散列 - 实际上与以明文形式存储密码一样不安全!角色系统是一个完整的混乱:is_admin函数与硬编码的角色名称,is_role完全混乱,check_uri_permissions是一个烂摊子,整个权限表是一个坏主意(URI可以更改和呈现页面不受保护;权限应始终准确存储敏感逻辑在哪里) . 因素在于!包含本机(差)CAPTCHA reCAPTCHA功能界面很乱

    FreakAuth Light

    优点非常全面的功能大部分记录完备的代码用户和配置文件数据的分离是一个很好的触摸挂钩到CI的验证系统激活电子邮件语言文件支持积极开发的缺点感觉有点臃肿(50个文件)然而它缺乏自动cookie登录(! )不支持使用用户名和电子邮件登录似乎存在UTF-8字符问题需要大量自动加载(阻碍性能)糟糕的微管理配置文件可怕的视图 - 控制器分离,视图和输出中有大量程序逻辑 - 编码成控制器 . 因素在于!包含视图中的HTML代码不佳包括不合标准的CAPTCHA到处调用的调试回声强制特定的文件夹结构强制特定的Ajax库(可以切换,但不应该在那里首先)没有登录尝试的最大限制 - 非常不安全!因素在于!劫持形式验证使用潜在的不安全的md5散列

    pc_user

    优点良好的功能设置,其占地面积小,重量轻,无膨胀(3个文件)优雅的自动cookie登录附带可选的测试实现(很好的触摸)缺点使用旧的CI数据库语法(不太安全)不挂钩到CI的验证系统Kinda不直观的状态(角色)系统(索引颠倒 - 不切实际)使用可能不安全的sha1散列

    Fresh Powered

    优点占地面积小(6档)缺点很多基本功能 . 因素在于!一切都是硬编码的 . 因素在于!

    Redux / Ion Auth

    根据the CodeIgniter wiki,Redux已经停产,但Ion Auth前叉很强劲:https://github.com/benedmunds/CodeIgniter-Ion-Auth

    Ion Auth是一个功能齐全的图书馆,没有过重或过于先进 . 在大多数情况下,其功能集将满足项目的要求 .

    优点轻巧,易于与CodeIgniter集成支持直接从库发送电子邮件在线良好的文档和良好的活动开发/用户社区简单实现到项目中比其他一些更复杂的数据库模式文档在某些方面缺乏细节

    SimpleLoginSecure

    Pros Tiny足迹(4个文件)简约,绝对没有膨胀使用phpass进行散列(优秀)缺点只有登录,注销,创建和删除缺少许多基本功能 . 因素在于!更多的起点而不是图书馆


    Don't get me wrong: 我不要重复使用他们的一些代码来构建我自己的代码 . 我希望能够解决的问题是什么' (such as hard security practices) over to softer '需要拥有' (such as hard security practices) over to softer ' .

    因此:回归基础 .

    CodeIgniter的身份验证正确完成

    这是我的MINIMAL必需的身份验证库功能列表 . 它也恰好是我自己的库的功能列表的一个子集;)

    可选测试实施的小尺寸完整文档无需自动加载 . 及时加载库以提高性能语言文件支持;没有硬编码字符串reCAPTCHA支持但可选推荐TRUE随机盐生成(例如使用random.org或random.irb.hr)可选附加组件以支持第三方登录(OpenID,Facebook Connect,Google帐户等)使用登录用户名或电子邮件分离用户和 Profiles 数据的电子邮件用于激活和丢失密码的电子邮件自动cookie登录功能用于散列的可配置phpass(当然适当加盐!)哈希密码哈希自动登录代码哈希丢失的密码代码隐藏到CI的验证系统中没有安全性问题!强制密码策略服务器端,带有可选的客户端(Javascript)验证器强制执行最大失败登录尝试次数,针对字典和DoS攻击采取最佳实践对策!通过准备(绑定)语句完成所有数据库访问!

    注意:最后几点不是你不需要的超高安全性过度杀伤您的Web应用程序 . If an authentication library doesn't meet these security standards 100%, DO NOT USE IT!

    最近高调的不负责任的编码员将他们从软件中删除的例子:#17是莎拉佩林的AOL电子邮件在总统竞选期间被黑客入侵的原因;最近,当布兰妮斯皮尔斯,巴拉克奥巴马,福克斯新闻和其他人的推特账号遭到黑客攻击时,#18和#19的讨厌组合成了罪魁祸首;仅在#20中,中国黑客就是如何在2008年的一次自动黑客攻击中从超过70,000个韩国网站中窃取900万条个人信息的 .

    这些攻击不是脑部手术 . 如果你把你的后门敞开,你就不应该对编码选择像CodeIgniter这样的最佳实践框架那么认真,你应该对自己负责,至少要做到最基本的安全措施 .


    <咆哮>

    基本上,它是这样的:我不关心auth库是否提供了许多功能,高级角色管理,PHP4兼容性,漂亮的CAPTCHA字体,国家表,完整的管理面板,铃声和口哨 - 如果库真的使我的网站 less secure 没有遵循最佳做法 . 这是一个身份验证包;它需要做一件事:认证 . 如果它不能做到这一点,它实际上弊大于利 .

    </咆哮>

    / Jens Roland

  • 2

    我是Redux Auth的开发人员,您提到的一些问题已在版本2测试版中得到修复 . 您也可以通过示例应用程序从官方网站上下载 .

    需要自动加载(阻碍性能)使用本质上不安全的“安全问题”概念 . 因素在于!

    现在没有使用安全问题,并且已经 Build 了一个更简单的忘记密码系统 .

    返回类型有点像真,假,错误和成功代码的大杂烩

    这在版本2中得到修复,并返回布尔值 . 我和你一样讨厌大杂烩 .

    不会挂钩CI的验证系统

    示例应用程序使用CI的验证系统 .

    不允许用户重新发送“丢失密码”代码

    工作正在进行中

    我还实现了一些其他功能,如电子邮件视图,这使您可以选择在电子邮件中使用CodeIgniter帮助程序 .

    它仍然是一项正在进行的工作,所以如果有任何更多的建议,请让它们继续 .

    -爆米花

    Ps:感谢您推荐Redux .

相关问题