【发布时间】:2008-09-23 13:27:01
【问题描述】:
当谈到网站安全框架时,我理解“不要自己动手”的口号。
无论如何,对于大多数情况。
我将在一个将文本消息集成到系统中的网站上进行合作。
我想使用现有的、经过充分测试的安全框架来保护用户数据,但我还需要它来保护用户的电话号码。
我不想成为负责处理一系列用户手机号码被盗用和发送垃圾邮件的人。
社区可以提供哪些建议?
【问题讨论】:
标签: php security sms spam-prevention
当谈到网站安全框架时,我理解“不要自己动手”的口号。
无论如何,对于大多数情况。
我将在一个将文本消息集成到系统中的网站上进行合作。
我想使用现有的、经过充分测试的安全框架来保护用户数据,但我还需要它来保护用户的电话号码。
我不想成为负责处理一系列用户手机号码被盗用和发送垃圾邮件的人。
社区可以提供哪些建议?
【问题讨论】:
标签: php security sms spam-prevention
请注意,应用于密码的技术在此处不适用。您可以存储加盐和散列的密码(尽管这样做的价值可能存在争议),但这不适用于电话号码。
如果有人劫持您的服务器,他们可以做任何服务器可以做的事情。这必须包括恢复电话号码,但如果密码很好,则不包括恢复密码。所以电话号码只是保护机密数据的一个特例。
如果手机号码确实是应用程序中唯一的敏感数据,那么您可以考虑隔离应用程序中发送文本的部分,并对手机号码进行非对称加密。在不同的进程(或在不同的机器上)运行具有解密电话号码的密钥的应用程序。该应用程序的界面可能有一个功能,该功能采用加密的否和要发送的消息。保持这个应用程序简单,并测试和审计它的鼻涕。要么对外界隐藏它,要么使用身份验证来证明请求确实来自您的主应用,或者两者兼而有之。
数据库和应用程序的主要部分都无法解密电话号码(例如,您无法搜索它们),但它们可以加密它们以添加到数据库中。
一般的技术叫做“权限分离”,以上只是一个例子。
请注意,电话号码通常需要在加密之前填充随机数据(例如对散列密码进行加盐)。否则有可能在不知道私钥的情况下回答“是加密电话号码 X 吗?”的问题。从垃圾邮件发送者窃取您的通讯组列表的观点来看,这可能不是问题,但从声称您的电话号码被安全存储的观点来看,这是一个问题,因为这意味着暴力攻击变得可行:只有几十亿电话号码,并且可能会针对给定用户大幅缩小范围。
对不起,这并没有直接回答你的问题:我不知道是否有一个PHP框架可以帮助实现权限分离。
[编辑添加:事实上,在我看来,在“保持特权应用程序简单”的标题下,您可能根本不想使用框架。这有点取决于你是否认为你更可能在你真正需要的少量代码中留下错误,而不是框架作者在他们更大(但更广泛使用)的代码中留下错误'我写过。但这是一个巨大的过度简化。]
【讨论】:
由于您需要能够检索电话号码,因此您真正能做的保护它们的唯一事情(除了保护您的数据库所做的正常事情之外)就是加密它们。这意味着您需要:
当然,不滚动自己的建议仍然适用,请使用 AES 或其他具有合理密钥长度的备受推崇的密码。
【讨论】:
我很高兴地宣布 PHP 漏洞安全系统的发布
这个项目代表着给 PHP 带来了一种由 Spring Security 提供的 Java 安全性,即以前的 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 参考文档获得一个大致概念,因为hole-security 使用相同的配置方式,但请记住它基于 Spring Security。
许可证: 它是在 Apache 许可证版本 2.0 下发布的。
特点: hole-security 带来了一个可插拔的安全系统,您可以在其中采用环境的安全要求。目前有一个非常简单的安全系统,因为它是第一个版本,但它带来的基础基础,您可以建议或请求将新功能添加到项目中。
目前的特点:
在内存 dao 身份验证中作为概念证明,您可以切换到您喜欢的 dao 或实现,从数据库或存储它的任何位置获取用户数据。在未来版本中,将创建一个基于 PDO 的实现。
配置过滤器以应用于 url 模式。可以插入 URL 路径匹配器,目前它附带一个 ant 样式路径匹配器。
可以在您的应用程序中使用授权管理器来决定在哪里做某事或不做某事,始终从基板上下文中获取引用。
如果应用了hole_HttpSessionContextIntegrationFilter,则可以从应用程序的任何代码访问共享安全上下文。您可以使用此上下文来保存与会话相关的信息,而无需直接使用会话对象。
您可以使用自定义登录页面并根据hole_AuthenticationProcessingFilter配置进行自定义,也可以根据您的自定义登录页面自定义hole_AuthenticationProcessingFilter。
默认密码编码器是纯文本,没有编码。未来版本将实现 MD5、基于 Sha、Base64 和其他相关编码。您可以创建自己的密码编码器并进行配置。
所有对象都按要求加载,如果过滤器之类的东西不用于请求,则不会加载。这提高了应用程序的性能 漏洞安全性还有其他相关功能。
【讨论】: