はい、常にパラメーターを検証する必要があります。人々はいつでも Web ブラウザーのアドレス バーのパラメーターをいじったり、DOM に保存されているパラメーターを変更したりできます。パラメータが台無しになる可能性がある別の例は、Web ページが長時間開いたままになっている場合です。誰かが「/users/3/edit」ページを表示し、1 時間開いたままにし、その後更新するとします。その間、そのユーザーは削除された可能性があります。Web サイトがクラッシュするのは望ましくありません。適切に処理する必要があります。
データベースとアダプターによっては、実行してUser.find_by_id("test")
もクラッシュしません。しかし、データベース/アダプターは文字列を整数に変換できませんでした。この特定のケースでできることの 1 つは、Ruby の.to_i
メソッドを使用することです。
User.find_by_id(params[:id].to_i)
の場合params[:id] = "12"
、Ruby はそれを整数に変換し12
、コードは正常に実行されます。の場合params[:id] = "test"
、Ruby はそれを整数に変換し0
ます。ID が 0 のデータベース レコードは決して存在しないはずです。
正規表現を使用して、文字列が整数かどうかをテストすることもできます。
しかし、一般的には、エラーを適切に処理し、入ってくるデータを制御できるように、常にパラメーターを検証するようにしてください。