您认为PHP框架中哪些安全特性是有用的或期望的?我已经开发了一个PHP框架,将作为一个开源项目发布,但我希望确保它具有适当的安全特性。以下是我到目前为止所拥有的:
PHP框架还应该合理地包括哪些内容?
发布于 2011-09-17 08:54:43
那么,将安全构建到一个框架中并不是一件容易的事情。例如,您提到的XSS保护。当前Web应用程序安全性的趋势是,处理注入缺陷需要三件事:
即使在处理上述所有服务器端时,当将易受攻击的Javascript代码引入应用程序(例如,也包括jQuery可能会引入DOM )时,您仍然可能容易受到DOM攻击。
就我个人而言,我认为框架中最重要、也常常被忽略的特性是安全缺省值和安全代码示例。开发人员经常复制和粘贴代码,或者将设置保留为默认设置。因此,如果您引入令牌作为CSRF保护,默认情况下将它们添加到每个表单中,并允许在代码/config中切换这些标记。
如果您正在寻找某种类型的安全框架检查表,那么曾经有一个OWASP项目(现已关闭)- 网络应用程序安全宣言。它的目的是提供这样一个测试,目前是最好的清单。还可以浏览各种OWASP备忘单,以帮助您实现每个安全控制。
发布于 2011-09-13 05:32:39
我建议在里面增加反自动化措施。框架的用户可以选择使用此功能来保护哪些页面(例如,登录页面或反馈表单)。如果攻击者多次提交表单,则将根据他的IP (而不是会话ID!)为每个后续请求面对一个CAPTCHA。
此外,会话处理是一项繁琐的任务。该框架应确保:
为了防止会话劫持,用户生成的会话不被接受,其中攻击者生成会话ID供其他人使用。
会话ID是在身份验证后重新生成的,这样当攻击者成功说服受害者使用某个会话ID时,当受害者登录时,攻击者将不会有经过身份验证的会话。
通过身份验证的会话的会话ID从不通过HTTP传输,而是对所有经过身份验证的内容使用SSL
会话cookie具有正确的标志HttpOnly,以及用于经过身份验证的会话的安全标志。
此外,我建议框架允许开发人员设置缓存策略。对于提供给经过身份验证的用户(可能包含隐私敏感数据)的页面,缓存应该很容易(甚至默认)关闭。
发布于 2011-09-13 15:37:24
哦喜悦-另一个PHP框架。请原谅我的讽刺,但是在野外已经有大量的框架在浮动。大多数都是臃肿、缓慢和充满安全漏洞。但至少你正试图提前解决安全问题。
我想说的是,框架是否应该提供自己的数据库抽象层是值得怀疑的。例如,有时活动记录模式很有用,但并不总是有用的。
到目前为止,最有价值的安全附加功能是保证向后兼容性,以鼓励用户在发布新版本时进行升级。
根据我在其他地方的评论,验证不是一个安全问题--正确的数据表示是。提供一种简单的机制,用于在不同目标的表示之间以及与目的地无关的格式之间进行更改(这通常意味着对base64编码进行了一些调整)。
然而,功能问题的验证并不是一件坏事--例如,确保预定的出发日期是在到达日期之后。
伐木很重要。
文件I/O的沙箱将是值得考虑的。
正如克里斯所说-你应该提供预防会议劫持/固定。
您可能会考虑提供一个身份验证框架(毕竟,如果您有ACL,您已经对如何实现身份验证施加了一些限制)。
如果您想要一个真正安全的框架,那么考虑一下如何实现不可搜索的会话(我为此提供的唯一解决方案依赖于守护进程进行权限分离--因此,对于大多数想要保护会话数据的人--即那些使用廉价共享托管包的人来说,这是完全不合适的)。
安全域还有很多其他的东西--例如异步消息传递支持。但是,请记住,每次添加更多的功能时,您可能会否认在您自己的框架之外使用互补框架的能力(例如,聪明、海鸥、教义在特定领域都很有能力)。
https://security.stackexchange.com/questions/7084
复制相似问题