越来越多的Web应用程序(最着名的是37Signals的Basecamp)为每个用户/帐户分配一个子域.我想知道这种做法有什么利弊.有没有这样做的特殊原因或者这只是一个美容功能?例如,这是否允许更好/更容易的扩展性和改进的安全性?
解决方法
我认为这可能与同源政策有关.如果两个用户的成员页面位于不同的子域上,浏览器将阻止一个子域中的脚本访问另一个子域中的文档.所以如果马洛里注册一个网站(mallory.example.org),并在其上放置一个恶意脚本,该脚本将无法修改Alice的网站(alice.example.org)的DOM.如果他们使用路径(example.org/mallory和example.org/alice),则SOP将无法正常工作,而Mallory的脚本可能会在Alice的页面上执行各种不良事情,例如假登录屏幕并发布密码回到马洛里
当两个子域解析为相同的IP时,SOP保护甚至起作用 – 只要URL的主机部分不同,现代浏览器将阻止跨域脚本尝试(以及其他一些潜在危险的事情).