是否有一个PHP安全框架可以保护电话号码和密码?

时间:2020-03-06 14:35:56  来源:igfitidea点击:

我了解网站安全框架中"不做自己的事"的口头禅。

无论如何,对于大多数情况。

我将在一个将文本消息集成到系统中的站点上进行协作。

我想使用一个经过良好测试的现有安全框架来保护用户数据,但是我也需要它来保护用户的电话号码。

我不想成为负责列出用户手机号码被塞住和发送垃圾邮件的人。

社区可以提供什么建议?

解决方案

由于我们需要能够检索电话号码,因此保护电话的唯一唯一措施(除了保护数据库以外的常规操作)是对电话进行加密。这意味着我们需要:

  • 确保在不经意间泄漏数据库转储时,密钥不会泄漏。
  • 当有人设法通过SQL注入系统时,请确保系统没有帮助解密电话号码。

当然,不滚动自己的建议仍然适用,请使用AES或者具有合理密钥长度的其他受人尊敬的密码。

请注意,应用于密码的技术不适用于此处。我们可以存储加盐和散列的密码(尽管这样做的价值可能会引起争议),但这不适用于电话号码。

如果有人劫持了服务器,则他们可以做服务器可以做的任何事情。这必须包括恢复电话号码,但如果哈希值正确,则不包括恢复密码。因此,电话号码只是保护机密数据的一种特殊情况。

如果电话号码确实是应用程序中唯一敏感的数据,那么我们可以考虑隔离发送文本的应用程序部分,并非对称地加密电话号码。在不同的过程中(或者在不同的计算机上)运行一个应用程序,该应用程序具有解密电话号码的密钥。这个应用程式的介面可能会有一个功能,它会采用加密的否和要传送的讯息。保持这个应用程序简单,并测试和审核它。或者将其隐藏在外部世界中,或者使用身份验证来证明请求确实来自主应用程序,或者两者都使用。

数据库或者应用程序的主要部分均不能解密电话号码(例如,我们无法搜索电话号码),但是他们可以加密电话号码以添加到数据库中。

通用技术称为"权限分离",以上仅是一个示例。

请注意,在加密之前,电话号码通常需要填充随机数据(例如添加哈希密码)。否则,可以在不知道私钥的情况下回答"加密的电话号码X?"问题。从垃圾邮件发送者的POV窃取分发列表来看,这可能不是问题,但是从POV中声称电话号码已被安全存储是一个问题,因为这意味着蛮力攻击变得可行:只有几十亿电话号码,并且有可能将其范围缩小到给定的用户。

抱歉,这不能直接回答问题:我不知道是否有一个PHP框架可以帮助实现权限分离。

[编辑添加:实际上,在我看来,在'保持特权应用程序简单'的标题下,我们可能根本不想使用框架。这取决于我们是否认为我们是或者多或者少地将错误留在了我们真正需要的少量代码中,而不是框架作者将错误留在了他们所使用的更大(但使用更广泛)的代码中。我写了。但这是一个极大的过度简化。]

我很高兴地宣布发布适用于PHP的Hole-security系统

该项目代表将以前由Acegi Security System for Spring提供的Spring Security在Java中提供的那种安全性带到PHP。它的设计吸引了Spring Security用户,因为其理念是相同的。这是为PHP网站增加安全性的一种简便易行的方法。使用基板IoC / DI进行配置,而使用Spring IoC / DI的Spring Security进行配置。

框架附带了一个示例配置,可以像这样使用:

$context = new substrate_Context(
    './path/to/hole-security/hole-security-config.php'
);

$context->execute();

$hole_Security = $context->get('hole_FilterChainProxy' );
$hole_Security->doFilter();

只要确保在我们选择的MVC的引导程序之前执行了框架的引导程序代码即可。

网站:
http://code.google.com/p/hole-security/

说明文件:
目前,我们可以在适用的地方使用Spring Security的参考文档。我们可以使用Acegi Security参考文档获得一个总体思路,因为Hole-security使用相同的配置方式,但是请记住,它是基于Spring Security的。

执照:
它是根据Apache许可版本2.0发布的。

特征:
Hole-security带来了可插拔的安全系统,我们可以在其中采用环境的安全要求。当前有一个非常简单的安全系统,因为它是第一个发行版,但是它带给基础基础可以建议或者要求将新功能添加到项目中。

当前功能:

  • 作为概念证明,在内存dao身份验证中,我们可以切换到首选的dao或者实现,该dao或者实现从数据库或者存储它的任何位置获取用户数据。在将来的版本中,将创建一个基于PDO的实现。
  • 用于网址格式的已配置过滤器。可以插入网址路径匹配器,目前它附带了ant样式路径匹配器。
  • 可以在应用程序中使用授权管理器来决定在什么地方做某事,始终从承印物上下文中获取参考。
  • 如果应用了Hole_HttpSessionContextIntegrationFilter,则可以从应用程序的任何代码访问共享安全上下文。我们可以使用此上下文来保存与会话有关的信息,而无需直接使用会话对象。
  • 我们可以使用自定义登录页面并根据Hole_AuthenticationProcessingFilter配置对其进行自定义,也可以根据自定义登录页面自定义Hole_AuthenticationProcessingFilter。
  • 默认密码编码器是纯文本,不进行编码。未来版本将具有MD5,基于Sha的,Base64和其他相关编码的实现。我们可以创建自己的密码编码器并进行配置。
  • 如果未将未用于请求的过滤器之类的内容加载,则所有对象均按要求加载。这提高了应用程序的性能。孔安全性还具有其他相关功能。