我已经在RoR中发布了我的第一个网站,但遭到攻击...
我的网站是一个简单的论坛,您可以在其中发布带有标题和内容的文章。
我认为标题中的字符数限制为150个
<%= form.text_field :title, :maxlength => 150, class: 'title_input' %>
,然后在控制器中
def create
if (params[:article][:title].length > 150)
render 'new'
end
@article = Article.new(params[:id])
if @article.save
redirect_to article_path
else
render 'new'
end
end
但这似乎不起作用,用户向我发送了75000个字符的标题,而它们都是表情符号
我正在使用Recaptcha来使垃圾邮件的重要性降低,但是像这样的10条帖子足以使我的应用程序瘫痪。
我不能禁止他,因为他一直在使用新IP并如此快速地更改它。
您知道我该如何阻止吗?
谢谢
编辑
我在这样的模型中使用验证器解决了
validates :title, presence: true, length: { in: 1..100 }
感谢Sampat
答案 0 :(得分:0)
如果您使用默认的rails行为,那么您使用的参数应该为空,因为正确的哈希应该类似于params[:article][:title]
,或者您使用的是强参数:article_params[:title]
您是否真的检查过params[:title]
是否包含上述信息?我建议您调试如何将信息发送到服务器,然后在正确的参数密钥中添加相应的限制
答案 1 :(得分:0)
将代码添加到模型中。它将限制最大限制
class Article < ApplicationRecord
validates :title, length: { maximum: 500,
too_long: "%{count} characters is the maximum allowed" }
end