【问题标题】:At what level should security be implemented in a social network web application?社交网络 Web 应用程序应在什么级别实施安全性?
【发布时间】:2010-12-26 20:04:20
【问题描述】:
我正在用 php/mysql 开发一个社交网络应用程序,我想听听您关于什么是实现安全性的更好方法的建议。我正在计划这样的事情:-在演示级别,我限制用户只能看到他有资格看到的那些项目/内容,他有资格和在数据库级别,每当我的数据被读取/写入或更新时我确认此人有权与该部分数据进行此类交互。因此,对于每个操作,都有 2 层安全性,一层在视图级别,另一层在数据库级别。双重检查会不会有很多开销?
当然,这只处理内部安全问题..
【问题讨论】:
标签:
php
security
web-applications
【解决方案1】:
我想说,任何需要哪怕是一点点安全性的应用都必须这样做。
我们有几个以类似方式工作的应用程序。我们在应用程序和数据库级别测试授权。好处之一是我们可以让多个松散相关的应用程序使用相同的数据存储,并强制执行完全相同的安全模型。
另一个好处是,如果应用程序是 pwnd,则更难破坏数据库。
按照这些思路,我们甚至不允许应用直接操作表格(选择/删除/等)。相反,一切都通过存储过程。所有 proc 都采用用户 ID(不可猜测)并在内部验证是否允许用户执行请求的功能。如果没有,我们会默默地失败。附带的好处是我们不受 sql 注入的影响。
除了允许数据库是自包含的并执行它自己的授权检查之外,即使他们能够获得一个有效的超级用户帐户,造成大量损坏也会变得很耗时。鉴于我们主动监控数据库和应用程序的使用情况,我们有能力检测和阻止正在进行的攻击,从而限制任何暴露。
请记住,如果他们不来抓你,那只是妄想症。他们几乎总是如此。 ;)
【解决方案2】:
这听起来像是处理这种情况的好方法,但为什么用户需要有这么多不同级别的资格,你不能只限制他们使用他们帐户中的信息吗?