前提・実現したいこと
ブログ投稿アプリの作成中です。
マークダウン記法を導入し、html_safeの記述を行っているため
xssを受けてしまう(?)ことを知りました。
そこで強引なやり方ではありますが
投稿自体にscriptを記入させないようにバリデーションをかけようと試みました。
/app/models/post.rb
ruby
1class Post < ApplicationRecord 2 validates :text, exclusion: { in: %w( script )}, presence: true 3end
しかし、上記の記述ではscriptという記述のみではバリデーションが成功するものの
scriptAなど何か他の文字を入れた場合は保存ができてしまいます。
特定の文字が含まれた場合は、保存されないようにしたいです。
調べたのですが出てこなかったです。
これは可能なのでしょうか。
途中経過
試したことformat withと正規表現を用いてバリデーションを試みました。
/app/models/post.rb
ruby
1validates :text, format: { with: ^(?!.*script).*$ }, presence: true
しかし結果はSyntaxエラーになります。
書き方が間違っているのかそもそもformat withの場合このようなバリデーションはかけられないため
カスタムバリデーターを使った方が良いのか模索中です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/18 00:40