加载存储在数据库中的url的安全方式?

时间:2015-10-15 02:12:10

标签: ruby-on-rails

加载保存在数据库中的网址最安全的方法是什么?

window.open("<%=raw @post.url%>");

似乎不是一个好主意。

3 个答案:

答案 0 :(得分:0)

您如何在您的数据库中存储URL /您将在何处使用它?

假设@ post.url将返回您想要的网址,那么就像以下一样简单:

<a href="<%= @post.url %>">[awesome link name]</a>

html输出将是:

<a href="http://your-stored-url.com">[awesome link name]</a>

您是否可以提供有关网址在何处/如何使用的更多信息?

答案 1 :(得分:0)

<% unless @post.url.blank? %>
  <%= link_to @post.url, 'http://' + @post.url, :target => '_blank' %>
<% end %>

您可能想要使用它。除非检查数据库中的URL是否为空。如果URL在数据库中是必需的,您可能希望删除该部分。

额外的,如果你需要验证url,你可能想要使用这样的验证:

  URL = /\A(www.)?([a-zA-Z0-9]+).[a-zA-Z0-9]*.[a-z]{3}.?([a-z]+)?\z/
  validates :url,
            format: {with: URL, message: 'Invalid url format. Make sure you don\'t have http:// in your link'},
            allow_blank: true

因此,用户将输入不带http://的网址,您将在html中添加http://,如上所示。

答案 2 :(得分:0)

由于window.open在新标签页中打开一个链接,因此无法直接指示浏览器表单服务器端在新标签页中打开链接。

但你可以申请一点JS黑客。在你的erb文件中,它就像。

<%= link_to "Post", @post.url, {:target => '_blank', :id => "linktoclick"} %>
<script>
   document.ready = function(){
     document.getElementById("linktoclick").click();
   }
</script>