消除消息框的用户输入

时间:2017-12-04 16:40:16

标签: ruby-on-rails ruby regex

我正在开发一个与加密相关的应用程序,因为那些从事加密操作的人总会尝试某种骗局或脚本小子和#34; hack"我想找出清理用户到用户聊天框和评论字段中内容的最佳方法。

我不想要任何HTML / CSS / JS。

我想留下电子邮件地址,网址,电话号码和"正常"文字没有动过。

现在我正在进行.gsub(/[^0-9a-zA-Z\@\;\:\-\_\,\.\ ]/i, '') before_save,但它删除了换行符。

我尝试添加.gsub(/[^0-9a-zA-Z\R\@\;\:\-\_\,\.\ ]/i, '')以使其仅保留换行符,但似乎无效。

不想添加任何宝石。

1 个答案:

答案 0 :(得分:1)

Rails内置了一个出色的消毒剂,我建议你使用它而不是试图找出你自己的正则表达式。

请参阅:

http://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html

在呈现任何用户的输入之前,页面将其包装在santize

<%= sanitize @comment.body %>

如果要在保存到数据库之前进行清理,可以将帮助程序包含在控制器中

class MyController < ApplicationController
  include ActionView::Helpers::SanitizeHelper

  def create
    content = sanitize(params[:content])
    Thing.save(content: content)
  end
end