社交和分享网站如何Facebook 和 Google+ 在代码中处理安全策略?

How does social and sharing websites e.g. Facebook and Google+ handle security policies in code?

我听说大多数网站都使用临时安全措施。 如何在代码中指定和执行安全策略? 例如,只有鲍勃的朋友可以看到他的电子邮件地址。 如果政策交织在整个代码中,他们如何管理它,因为它很容易出错。 我已经开始为网络应用程序开发一个信息流控制包,只是好奇大公司使用什么?

注意:此问题最适合 Security Stack Exchange 网站。

一般来说,软件开发公司 - 不仅仅是网站 - 使用代码(Java、C#...你的名字)开发自己的授权逻辑。

有一些公司/团队已经将他们的业务逻辑与其授权逻辑分离。这样做称为 外部化授权。与之相关的字段称为 externalized authorization.

外部化授权有几个好处:

  • 将业务逻辑与授权逻辑分离
  • 更容易分别维护任一代码库
  • 更容易审核
  • 中心化逻辑
  • ...

有几种方法可以实现外化授权。以下是一些示例:

  • Spring 安全性 (Java) 为您提供了一种使用角色和注释表达授权逻辑的方法
  • .Net 中基于声明的授权
  • CanCan 和 CanCanCan 在 Ruby
  • Python
  • 中的烧瓶

所有这些方法都特定于一种给定的语言。一些例如CanCan 是基于策略的。其他人使用基于角色的方法。

理想情况下,所有公司和网站都将使用基于政策的技术中立方法。实际上围绕这样的 'thing' 有一个标准。它被称为ABAC(基于属性的访问控制),它使用用XACML编写的策略来表达访问控制逻辑。

很酷的是,您可以主要在 Facebook、Yahoo 等网站上重复使用这些政策...