PHP客户端PIN安全

PHP客户端PIN安全,php,captcha,luhn,lockout,Php,Captcha,Luhn,Lockout,我目前正在开发一个系统,该系统具有一项功能,客户可以通过提供PIN“号码”查看其购买/续约/等的详细信息 由于我们的目标客户类型,使用PIN而不是登录信息。PIN会打印在发送给他们的文档上 当他们提供PIN时显示的视图不会显示高度敏感的信息,如信用卡等,但会显示不太敏感的信息,如产品名称、类型、价格、条形码、维修等 问题在于PIN码。我选择使用随机的5个字符的PIN(0-9,a-z a-z)-区分大小写。 我将删除一些('I','1','l','0','O','rn','vv'),因此实际的组合

我目前正在开发一个系统,该系统具有一项功能,客户可以通过提供PIN“号码”查看其购买/续约/等的详细信息

由于我们的目标客户类型,使用PIN而不是登录信息。PIN会打印在发送给他们的文档上

当他们提供PIN时显示的视图不会显示高度敏感的信息,如信用卡等,但会显示不太敏感的信息,如产品名称、类型、价格、条形码、维修等

问题在于PIN码。我选择使用随机的5个字符的PIN(0-9,a-z a-z)-区分大小写。 我将删除一些('I','1','l','0','O','rn','vv'),因此实际的组合数实际上更低

关于这一点,我有几个问题:

  • 这种做法可以接受吗
  • 我是否应该编写一个锁定机制来“禁止”来自尝试大量失败的IP的流量*
  • 我是否应该写一个错误检查系统(类似于Luhn的信用卡号算法)
  • *我应该使用验证码系统吗
  • 1) 是的,但这取决于目标受众。 2) 有时它是有意义的,有时由于系统的使用方式以及共享IP号码上有多少客户端,它无法工作。 3) 它会增加什么价值?这难道不能帮助人们找到一个工作别针吗?
    4) 取决于目标受众,以及验证码的类型。

    首先,不仅要询问PIN码,还要添加一些客户知道的简单信息,比如蜗牛邮件系统,你经常会询问你的邮政编码。这就把那些不知何故“共享秘密”的人清理了出来

    验证码,如果不是很难的话,是有意义的,因为它有助于减少机器人的“猜测”尝试。正如Stefan提到的,由于共享IP,IP禁止是有问题的


    根据错误检查,当表单帖子出错时,您还可以实现某种“tar-pit”,例如延迟处理传入连接。一个简单的算法错误检查可以帮助您避免对给定PIN进行无用的数据库查找。

    至于验证码和锁定-我会选择验证码,并延迟1)验证码失败的客户端,以及2)无效登录:在检查之前,第一次尝试睡眠1秒,第二次睡眠2s,第三次睡眠4s,第二次睡眠8s。这不会给普通用户带来太多不便,但会显著降低攻击者的攻击速度。不管你做什么,人们都会弄错——没有必要直接禁止他们

    校验和-可能作为第6个字符用于检测键入错误,而不是用于安全性

    至于密码强度,这是一个弱密码-我不会用它作为唯一的授权形式比“分享LoCalts的图片”更强大的东西-考虑更长的一个,或者你的客户甚至可能偶然访问彼此的数据(并且他们往往会真正感到沮丧时,发生这种情况:“你是说任何人都可以看到我的数据?!”)

    正在使用PIN而不是登录 信息的类型不同 我们的目标客户。PIN打印在发送给他们的文档上

    非常奇怪,但是你可以这样写。我认为你应该重新考虑是否真的有必要。但是如果我理解正确,你可以通过snailmail发送文档?例如,不可能向用户发送PIN码,然后让他们登录到openID()中吗。我会将其锁定为谷歌的OpenID提供商,因为这些帐户是“安全的”。这样,您就增加了另一个级别的安全性。此外,谷歌使用验证码验证帐户(使其安全) “安全”)

    这种做法可以接受吗

    我认为这是可以接受的,尽管很奇怪

    我应该写一个锁定机制吗 “禁止”来自IP的流量 失败尝试的数量*

    我认为你应该写一个锁定机制,因为暴力破解密码已经很容易完成了,但是暴力破解PIN完全可以不费吹灰之力就完成。虽然我不认为你应该通过IP来完成,因为最终用户可能坐在路由器后面,然后他就会被阻止。黑客也可能有一个僵尸t执行此类攻击。 我今天读到了关于感谢stackoverflow.com的文章,我也发现它非常有趣。也许你可以用它来保护自己免受攻击

    我应该写一个错误检查吗 系统(类似于中的Luhn算法) 信用卡号码

    我不这么认为

    我应该使用验证码系统吗

    防止自动攻击的唯一真正方法是验证码,所以我认为你应该这样做。Google/Twitter/etc不使用验证码,因为它们对用户友好,但因为这是阻止自动攻击的唯一有效方法。如果你想用Google的OpenID实现我的系统,那么你可以跳过这一步,因为Google已经有了是你掩护的

    是的,但这取决于信息的价值,如果信息价值高,你认为有人可能闯入,你应该考虑额外的保护。 <> LI>如果您所保护的信息具有很高的价值,这可能是个好主意,在这种情况下,您必须警告用户,他有有限数量的可能性,创建一个日志文件来监视代码输入失败,并且考虑到如果用户在NAT后面,很多用户可以使用相同的IP。(例如,办公室或学校中的所有用户,也包括像fastweb这样的连接对一大群人使用一个ip),因此不要长时间阻止ip(每3-5次失败15-30秒应该是正确的,以避免暴力攻击,用户第二次失败时,您可以将其加倍)而且,最重要的是,只阻止代码导入,而不是整个站点
  • 它是不需要的,但您可以实现它,正如我所说的,它还取决于信息的价值
  • 避免使用代理和爬虫是个好主意,但我建议使用不同的方法:使用带有“5+2”这样问题的图像
     AXV2-X342-3420