Ruby on rails 如何在Rails应用程序中隐藏源代码片段?

Ruby on rails 如何在Rails应用程序中隐藏源代码片段?,ruby-on-rails,security,Ruby On Rails,Security,我在查看Rails应用程序的源代码时注意到,很多信息都是公开的,但不应该公开——特别是一个包含我的GA账号和表单的真实性标记的Google Analytics脚本。 关于在源代码中隐藏此类代码,是否有任何指导原则?您的Google Analytics ID和Authentity token都需要可供浏览器使用才能完成其工作。它们不需要隐藏。让用户看到它们不会带来任何安全风险。您的Google Analytics ID和Authentity token都需要可供浏览器使用才能正常工作。它们不需要隐

我在查看Rails应用程序的源代码时注意到,很多信息都是公开的,但不应该公开——特别是一个包含我的GA账号和表单的真实性标记的Google Analytics脚本。
关于在源代码中隐藏此类代码,是否有任何指导原则?

您的Google Analytics ID和Authentity token都需要可供浏览器使用才能完成其工作。它们不需要隐藏。让用户看到它们不会带来任何安全风险。

您的Google Analytics ID和Authentity token都需要可供浏览器使用才能正常工作。它们不需要隐藏。让用户看到它们不会带来任何安全风险。

如果“查看源”指的是从服务器返回的HTML,则不会。有一些服务和产品会对页面进行编码,使其难以破译,但这绝不是不可能的,因为您的浏览器最终必须这样做才能呈现页面。这些页面加密程序中的大多数,有时也被称为页面加密程序,将使搜索引擎无法访问您的站点,因为它们在索引页面之前不会运行JavaScript

看看其他网站,你会发现这是一个相当普遍的做法,让这类东西打开,因为时间和努力所涉及的模糊或隐藏它是浪费时间。只要你没有无意中泄露任何敏感信息,比如你的Amazon S3帐户密钥或用于加密会话的秘密(这不太可能是偶然发生的),那么你就没事了

不过,请想一想。如果浏览器无法访问您的Google Analytics账号,Google脚本如何知道要跟踪哪个账号?

如果“查看源”是指从服务器返回的HTML,则不是。有些服务和产品会对您的页面进行编码,使其难以破译,但这从来都不是不可能的,因为浏览器最终必须这样做才能呈现页面。这些页面加密程序中的大多数,有时也被称为页面加密程序,将使搜索引擎无法访问您的站点,因为它们在索引页面之前不会运行JavaScript

看看其他网站,你会发现这是一个相当普遍的做法,让这类东西打开,因为时间和努力所涉及的模糊或隐藏它是浪费时间。只要你没有无意中泄露任何敏感信息,比如你的Amazon S3帐户密钥或用于加密会话的秘密(这不太可能是偶然发生的),那么你就没事了


不过,请想一想。如果浏览器无法访问您的Google Analytics账号,Google脚本如何知道跟踪哪个账号?

我认为将您的真实性令牌放在那里并不危险。为了查看真实性令牌,用户必须登录。用户是否拥有该会话的真实性令牌并不重要。它应该在用户注销时过期

但是,如果您愿意,可以对源代码隐藏这些内容(尽管如果您有Firebug或类似的实用程序,它们仍然可用)

<>你的Ga脚本,你可以认为它是一种资源。您的application.js(或其他包含的js文件)可以向控制器发出AJAX调用(请求头必须接受javascript),并且您的控制器可以发回包含脚本的js.erb文件。现在,如果查看对控制器请求的响应,这个js只在Firebug中可见。您将无法在源代码中看到它

对于真实性令牌,您可以执行类似的操作。我在我的一个应用程序中创建了一个JavaScript表单生成器。这个表单生成器是一个资源,它再次通过AJAX调用检索并作为js.erb发送。js.erb文件具有FormBuilder构造函数。在该构造函数中,有一个builder.form()函数可以执行以下操作:

return $('<%= form_for @object do |f| %> <% end %>');
return$('');
这将返回一个jQuery对象,该对象包含一个Rails表单,其中包含authenticity令牌和所有其他好东西


如果您希望JS form builder做的不仅仅是吐出一个表单(例如,基于对象的属性名称动态创建builder对象的属性,其中包含相应属性的输入、复选框和集合),跟我谈谈,我也可以告诉你我是怎么做到的:)

我认为把你的真伪令牌放在那里并不危险。为了查看真实性令牌,用户必须登录。用户是否拥有该会话的真实性令牌并不重要。它应该在用户注销时过期

但是,如果您愿意,可以对源代码隐藏这些内容(尽管如果您有Firebug或类似的实用程序,它们仍然可用)

<>你的Ga脚本,你可以认为它是一种资源。您的application.js(或其他包含的js文件)可以向控制器发出AJAX调用(请求头必须接受javascript),并且您的控制器可以发回包含脚本的js.erb文件。现在,如果查看对控制器请求的响应,这个js只在Firebug中可见。您将无法在源代码中看到它

对于真实性令牌,您可以执行类似的操作。我在我的一个应用程序中创建了一个JavaScript表单生成器。这个表单生成器是一个资源,它再次通过AJAX调用检索并作为js.erb发送。js.erb文件具有FormBuilder构造函数。在该构造函数中,有一个builder.form()函数可以执行以下操作:

return $('<%= form_for @object do |f| %> <% end %>');
return$('');
这将返回一个jQuery对象,该对象包含一个Rails表单,其中包含authenticity令牌和所有其他好东西

如果你想让你的JS表单生成器做的不仅仅是吐出一个表单(例如,动态创建适当的