我正在开发一个与加密相关的应用程序,因为那些从事加密操作的人总会尝试某种骗局或脚本小子和#34; hack"我想找出清理用户到用户聊天框和评论字段中内容的最佳方法。
我不想要任何HTML / CSS / JS。
我想留下电子邮件地址,网址,电话号码和"正常"文字没有动过。
现在我正在进行.gsub(/[^0-9a-zA-Z\@\;\:\-\_\,\.\ ]/i, '')
before_save,但它删除了换行符。
我尝试添加.gsub(/[^0-9a-zA-Z\R\@\;\:\-\_\,\.\ ]/i, '')
以使其仅保留换行符,但似乎无效。
不想添加任何宝石。
答案 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