フォームの2重送信はセキュリティ問題か?

Development 11月 16, 2006
(Last Updated On: )

備考:前のエントリのコメントに対してこのエントリを作成しました。

セキュリティ対策の3大要素の一つとしてデータの整合性(Integrity)があります。3要素は私が勝手に決めたことではなくISO規格でも決まっています。

個別のアプリでの解釈の問題になりますが、データの整合性に重複送信が含まれない、と考えるのであればコメントされている通り「発想が変」と言う考え方になるかもしれません。重要なデータでなければ(例えばブログへのコメントなど)安全性とは無関係といってもあまり差し支えないです。しかし、注文や送金などのデータでは致命的です。

# 認証システムが無いサイト(必要ないサイト)
# に「認証システムが無い」からといって「セキュリ
# ティ問題だ」と騒ぐ必要がないのと同じでデータ整
# 合性が必要ないサイトではセキュリティ問題になり
# ません。だからと言ってデータ整合性の問題が
# セキュリティ問題でなくなる訳ではありません。

従ってデータの整合性が必要でないサイトやアクセシビリティを気にしないサイトであればREFERERでCSRF対策したサイトでも、2重送信対策をしていないサイトでも問題ないといえるでしょう。データの整合性がセキュリティ問題でないサイトも多くありますが一般的にはセキュリティ問題といっても差し支えないと考えています。(認証の問題がセキュリティ問題であると同じように、データの整合性もセキュリティ問題ということです)

# REFERERを送ってこないクライアントからは
# 接続を受け付けなければアクセシビリティ
# の問題になります。

安全性が低いサイト、アクセシビリティが低いサイトを作ることは自由です。しかし、お勧めできるサイトでないと考えています。完全なCSRF対策(と2重送信対策)を施したサイト作っても手間はほとんど変わりません。これらの理由からREFERERを利用したCSRF対策、ハッシュ値等を利用した2重送信対策は不完全・不適切な対策であると考えています。

投稿者: yohgaki