LoginSignup
1
1

More than 3 years have passed since last update.

rubyの正規表現で「^」や「$」を使おうとするとエラーが出る話

Posted at

前提

Rubyのバージョンは6.0.0
railsのバージョンは6.0.3.4
上記の環境でエラーは発生しました。

エラー内容

The provided regular expression is using multiline anchors (^ or $), which may present a security risk. Did you mean to use \A and \z, or forgot to add the :multiline => true option? (ArgumentError)

どうやら「^」や「$」はセキュリティ上のリスクがあるということでエラーが出ているようです。

解決した方法

エラー文にしたがって ^→\A, $→\z のように変更すると解決しました!

エラーに関しての詳細

調べてみたところRailsの4.0以降のバージョンでは上記エラーが出るようになったようです。
日々セキュリティが向上しているんですね!

「^」や「$」がリスクがある理由としては
「^」→行頭
「$」→行末
であるため、複数行を渡された時に予期せぬ値の許容が起きてしまうから。

そのため
「/A」→文字列の先頭
「/z]→文字列の末尾
に変更すると各文字列ごとに読み込むため、複数行渡されても大丈夫なので「/A」「/z」を使ってくださいね!
という指示が出てきた、というエラーでした。

ちなみに「:multiline => true」オプションを使えば「^」や「$」も使えるようなので、複数行を渡すことが前提であればこのオプションを使う解決方法の方がいいのかもしれませんね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1