2

假设我正在尝试创建一个名为 Blue 的应用程序。Blue 是一个 Ruby on Rails 应用程序,可以将任何网站的背景变成蓝色。它还允许用户登录并跟踪他们访问过并变成蓝色的网站。

为了将网站的背景网站变为蓝色,我创建了一个插入<link HREF="http://www.example.com/blue.css" type="text/css">响应正文的网络代理。代理被实现为机架应用程序,并使用Rails 3 Railscast 中的 Rack 方法放置在 Rails 路由中:

root :to => BlueProxy, :constraints => { :subdomain => "proxy" }

我非常担心这种方法的安全性。我知道默认情况下,我的应用程序中 cookie 的域是.example.com. 如果用户输入了恶意 URL,网站可能会操纵用户的帐户。我可以通过只允许www应用程序中的 cookie 的子域来解决这个问题。但是,我还希望代理能够为代理站点存储 cookie。

这是我的三个问题:

  1. 这是一个不好的方法吗?有没有更好的方法来解决这个问题?
  2. 在 Rails 中保持兄弟子域 cookie 分开的最佳方法是什么?
  3. 还有其他我遗漏的安全问题吗?
4

1 回答 1

0

这种方法很危险,出于以下几个原因,我提醒您不要运行代理:

  1. 它引发了一系列法律问题,从访问非法内容的人到为您自己的利益托管内容(并对其进行修改)。
  2. 如果该网站受欢迎,您的带宽(和托管费用)将会爆炸式增长。
  3. 在 iframe 中加载内容存在 ux 问题,例如浏览器后退按钮的性能不如用户想要的那样。
  4. 运行代理会为您的站点打开更多攻击媒介(例如,向通过您的站点代理的恶意站点发送永久链接),您必须从安全角度考虑这些攻击媒介。

不要在你的后端运行一个开放的代理(好吧,也许它不是完全开放的,但是有人注册有多难?),考虑在前端使用浏览器扩展或greasemonkey脚本来获取它的集合您的 rails 应用程序中的规则,然后在客户端添加样式表更改。

于 2013-01-14T14:52:18.207 回答