相关疑难解决方法(0)

基于表单的网站身份验证的权威指南

基于表单的网站身份验证

我们认为Stack Overflow不仅应该是非常具体的技术问题的资源,而且还应该是关于如何解决常见问题变化的一般指导原则."基于表单的网站身份验证"应该是这种实验的一个很好的主题.

它应包括以下主题:

  • 如何登录
  • 如何退出
  • 如何保持登录状态
  • 管理cookie(包括推荐设置)
  • SSL/HTTPS加密
  • 如何存储密码
  • 使用秘密问题
  • 忘记用户名/密码功能
  • 使用nonce来防止跨站点请求伪造(CSRF)
  • OpenID的
  • "记住我"复选框
  • 浏览器自动完成用户名和密码
  • 秘密URL(受摘要保护的公共URL)
  • 检查密码强度
  • 电子邮件验证
  • 还有更多关于 基于表单的身份验证 ...

它不应该包括以下内容:

  • 角色和授权
  • HTTP基本身份验证

请帮助我们:

  1. 建议子主题
  2. 提交有关此主题的好文章
  3. 编辑官方答案

language-agnostic security authentication article http

5311
推荐指数
12
解决办法
59万
查看次数

什么是最好的分布式蛮力对策?

首先,一点背景:我正在为CodeIgniter实现一个auth + auth系统并不是什么秘密,到目前为止我赢了(可以这么说).但是我遇到了一个非常重要的挑战(大多数auth库完全错过了,但我坚持正确处理它):如何智能地处理大规模,分布式,可变用户名的暴力攻击.

我知道所有常用的技巧:

  1. 限制每个IP /主机的失败尝试次数并拒绝违规者访问(例如Fail2Ban) - 由于僵尸网络变得越来越智能,它们不再起作用
  2. 将上述内容与已知的"坏"IP /主机(例如DenyHosts)的黑名单相结合- 它依赖于僵尸网络下降为#1,它们越来越不会
  3. IP /主机白名单与传统的身份验证相结合(对于动态IP用户而言,在大多数网站上都是无用的)
  4. 在N分钟/小时内设置失败尝试次数的站点范围限制,并在此之后限制(暂停)所有登录尝试,持续数分钟/小时(DoS攻击你的问题变为僵尸网络儿童游戏)
  5. 没有登录/密码选项的所有用户的强制性数字签名(公钥证书)或RSA硬件令牌(毫无疑问是坚如磐石的解决方案,但仅适用于封闭的专用服务)
  6. 强制执行的超强密码方案(例如> 25个带有符号的无意义字符 - 再次对临时用户来说太不切实际)
  7. 最后,CAPTCHA(在大多数情况下都可以工作,但对用户来说很烦人,对于一个坚定的,足智多谋的攻击者几乎无用)

现在,这些只是理论上可行的想法.有很多垃圾想法可以打开网站(比如琐碎的DoS攻击).我想要的是更好的东西.更好的是,我的意思是:

  • 它必须安全(+)抵御DoS和暴力攻击,并且不会引入任何新的漏洞,这些漏洞可能会让稍微狡猾的机器人继续在雷达下运行

  • 它必须是自动化的.如果需要人工操作员验证每次登录或监控可疑活动,那么它无法在真实场景中运行

  • 它必须适用于主流网络使用(即可由非程序员执行的高流失率,高流量和开放式注册)

  • 它不会妨碍用户体验到临时用户会感到烦恼或沮丧(并可能放弃网站)

  • 它不能涉及小猫,除非它们真的是非常安全的小猫

(+)'安全',我的意思是至少和偏执的用户保密密码一样安全

所以 - 让我们听听吧!你会怎么做?你知道我没有提到过的最佳实践(哦,请你说)吗?我承认我对自己有所了解(结合3和4的想法),但我会让真正的专家在让自己尴尬之前说话;-)

security authentication brute-force

149
推荐指数
7
解决办法
2万
查看次数

Codeigniter 3.x认证库?

使用新的Codeigniter 3.0版本,您使用哪些身份验证库?

  • Flexi auth非常好,非常强大,有很好的CI 2.0文档,但它已经很老了,我可以看到它已停止使用.当然,它不能与CI 3.0一起使用.我已经测试了它并尝试将其迁移到CI 3.0,但是因为它使用了旧的ci_sessions模式,我看到它有很多工作需要重写所有使用会话的代码部分.它似乎适用于文件会话和其代码的一些更改.
  • 社区auth有一个CI 3.0版本,但正如我所看到的,它有很多错误,而且目前还远远不够可靠.我已经彻底测试了它,它无法正常工作,因为它的令牌jar系统及其cookie管理存在问题.用户无法在大多数时间登录,并且它被用作Codeigniter的整个第三方库,我个人不喜欢这样,因为它有很多文件/文件夹需要维护.我更喜欢简单的CI库和1-2个模型,如flexi-auth.虽然如果它正常工作,我不介意Community Auth的方法.
  • Tank Auth过去是一个可靠的解决方案,但与Codeigniter 3.0不同,因为它也有许多不兼容性.有人询问它与CI 3.0的兼容性,但到目前为止还没有飞机.
  • DX Auth是一个旧的身份验证库,正如我在其github存储库中看到的,有一些尝试在CI 3.0上迁移它但我无法亲自测试它们中的任何一个.

那么,是否有人在大型CI 3.0 Web应用程序上成功集成(或迁移)了前面提到的任何库?你自己写的吗?你是否坚持使用CI 2直到进一步的CI 3.0开发?

降票的更新

这篇关于 codeigniter中的身份验证库的帖子非常受欢迎且非常有用.我认为,至少在一些有用的答案之前,不应该关闭以这种方式帮助社区的帖子.它之前没有讨论过,我真的希望看到更有经验的开发人员的意见.

authentication codeigniter codeigniter-3

42
推荐指数
2
解决办法
3万
查看次数

还记得我最好的Cookie吗?

我读到关于这个论点许多老问题,我认为最好的做法是设置了一个cookie username,user_id并随机令牌.

在创建cookie时,相同cookie的数据存储在DB中,当用户拥有cookie时,它们将被比较(cookie数据,DB数据).

如果这是真正的最佳实践,我真的无法理解安全逻辑在哪里.

窃取cookie的攻击者与原始用户具有相同的cookie:|

忘了一步?:P

security cookies session-cookies

20
推荐指数
3
解决办法
2万
查看次数

13
推荐指数
1
解决办法
2万
查看次数

为什么用户和个人资料数据的分离被认为是好的?

我一直在读这个问题,觉得我不太同意这个说法Separation of user and profile data is a nice touch.

在我看来,分析数据,例如国家或属于用户对象的任何东西,同时将这些数据分成简档导致创建与用户对象具有1对1关系的新对象(和表).仅仅因为美学原因,这种分离是否被认为是一种好的做法?(您只能在一个表中看到用户输入数据,而在另一个表中看到生成的数据)

language-agnostic oop authorization

9
推荐指数
1
解决办法
1129
查看次数

在CodeIgniter中制作管理页面的最佳方法?

我正在使用CodeIgniter中的一个应用程序,我希望在应用程序中有几个对象的管理页面,我想知道将这些应用程序放入MVC结构的更好方法是什么.

想法1: 在每个控制器中,有一个管理功能,并将我想要的所有管理页面添加到该功能中.示例网址:domain.com/articles/admin

想法2创建 一个新的管理控制器,它必须引用许多不同的模型,并将所有管理页面放在那里.示例网址:domain.com/admin/articles

哪种方式会更好?

编辑以供说明:通过管理功能,我的意思是能够对任何对象执行基本的CRUD操作,并能够显示所有所述对象的列表.

php codeigniter access-control

8
推荐指数
2
解决办法
1万
查看次数

CodeIgniter全局函数

我可以在哪里放置我的"全局"功能,如果用户已登录,它将检查?

因为我想做类似的事情:用户只有在函数isLogged()返回TRUE 时才能浏览某些页面,并且我必须在某些视图中使用它,这就是为什么它应该是一个"全局"函数,我可以从任何地方.

那可能吗?或者有更好的解决方案吗?

php codeigniter function

8
推荐指数
2
解决办法
7301
查看次数

使用Codeigniter登录系统

我是codeigniter的新手,但我对基础知识非常清楚.我实际上是从我的新Web应用程序(CMS)开始的.

我想知道用于为管理面板(后端)创建具有codeigniter的登录系统的最佳方法.

此致,Mrinal Purohit

login codeigniter

7
推荐指数
1
解决办法
3万
查看次数

我如何使用CodeIgniter ACL库?

如何实现ACL库?将ACL用于用户角色的最佳方法是什么?在标准PHP中,我会编写如下代码:

if (userTypeId == 'Admin') {
  hello Admin
} else if (userTypeId == 'Member') {
   hello member
}
Run Code Online (Sandbox Code Playgroud)

你会如何使用CodeIgniter做到这一点?

php acl codeigniter

6
推荐指数
2
解决办法
2万
查看次数