是否有保护电话号码和密码的PHP安全框架?

时间:2008-09-23 13:27:01

标签: php security sms spam-prevention

在网站安全框架方面,我理解“不要自己动手”的口头禅。

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

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

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

我不想成为用户手机号码被劫持和垃圾邮件的负责人。

社区可以提供哪些建议?

3 个答案:

答案 0 :(得分:7)

请注意,应用于密码的技术不适用于此处。您可以存储盐渍和散列的密码(虽然这样做的价值可能存在争议),但这对电话号码不起作用。

如果有人插入您的服务器,他们可以做任何服务器可以做的事情。这必须包括恢复电话号码,但不包括恢复密码,如果它已经散列好。因此,电话号码只是保护机密数据的一个特例。

如果手机nos确实是应用程序中唯一的敏感数据,那么您可以查看发送文本的应用程序部分,以及非对称加密手机号码。在不同的进程(或在不同的计算机上)运行具有解密电话号码密钥的应用程序。这个应用程序的界面可能有一个功能,加密否和要发送的消息。保持这个应用程序简单,并测试和审核它的鼻涕。要么将其隐藏在外部世界,要么使用身份验证来证明请求确实来自您的主应用程序,或两者兼而有之。

数据库和应用程序的主要部分都无法解密电话号码(例如,您无法搜索它们),但是他们可以加密它们以添加到数据库中。

一般技术称为“权限分离”,上面只是一个例子。

请注意,在加密之前,通常需要使用随机数据填充手机号码(例如,使用哈希密码加盐)。否则,可以在不知道私钥的情况下回答“是加密的电话号码X?”的问题。这也许不是来自垃圾邮件发送者窃取您的通讯组列表的POV一个问题,但它是从是否认为你的电话号码被安全地存储的POV问题,因为它意味着蛮力攻击成为可行:只有数十亿电话号码,对于给定的用户,可能会大幅缩小范围。

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

[编辑添加:事实上,我发现在“保持特权应用程序简单”的标题下,您可能根本不想使用框架。这有点取决于你是否认为你或多或少会在你真正需要的少量代码中留下错误,而不是框架作者在更大(但更广泛使用)的代码量中留下了错误。写了。但这是一个巨大的过度简化。]

答案 1 :(得分:1)

由于您需要能够检索电话号码,因此您唯一可以做的就是保护它们(除了保护数据库之外的正常事情)加密它们。这意味着你需要:

  • 确保在无意中泄漏数据库转储时密钥不会泄漏。
  • 当有人设法SQL注入您的系统时,请确保您的系统无法解密电话号码。

当然,不推出自己的建议仍然适用,使用AES或其他一些备受好评的密码,密码长度合理。

答案 2 :(得分:1)

我很高兴地宣布发布针对PHP的漏洞安全系统

这个项目代表PHP为Spring提供了一种安全性,它由Spring Security以前的Acegi Security System for Spring提供。它旨在吸引Spring Security用户,因为其理念是相同的。这是一种为PHP站点添加安全性的不引人注目的方法。使用基板IoC / DI进行配置,因为Spring Security使用Spring IoC / DI。

带有框架的示例配置可以像这样使用:

$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参考文档获得一般性建议,因为漏洞安全性使用相同的配置方式,但请记住它基于Spring Security。

许可: 它是在Apache License Version 2.0下发布的。

特点: hole-security带来了可插拔的安全系统,您可以在其中采用环境的安全要求。目前有一个非常简单的安全系统,因为它是在第一个版本上,但它带来了基础,你可以建议或要求将新功能添加到项目中。

目前功能:

  1. 在内存dao身份验证中作为概念验证,您可以切换到首选的dao或实现,从数据库或存储它的任何位置获取用户数据。在期货发布中,将创建一个基于PDO的实现。

  2. 要应用于网址格式的已配置过滤器。可以插入Url路径匹配器,目前它附带了一个ant样式路径匹配器。

  3. 授权管理器可以在您的应用程序中用于决定何处做某事,始终从基材上下文中获取参考。

  4. 如果应用了hole_HttpSessionContextIntegrationFilter,则可以从应用程序的任何代码访问共享安全上下文。您可以使用此上下文保存与会话相关的信息,而无需直接使用会话对象。

  5. 您可以使用自定义登录页面并根据hole_AuthenticationProcessingFilter配置对其进行自定义,也可以根据自定义登录页面自定义hole_AuthenticationProcessingFilter。

  6. 默认密码编码器是纯文本,没有编码。期货发布将实现MD5,Sha Based,Base64和其他相关编码。您可以创建自己的密码编码器并进行配置。

  7. 如果没有加载未用于请求的过滤器,则会根据需要加载所有对象。这样可以提高应用程序的性能 还有其他与洞穴安全相关的功能。