水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 非SSLのフォームから安全に送信する方法はあるのか

非SSLのフォームから安全に送信する方法はあるのか

2006年6月1日(木曜日)

非SSLのフォームから安全に送信する方法はあるのか

インターネットの世界では、通信経路がどうなるかは保証されていなかったりするため、経路上に悪い人がいるかもしれません。悪い人は、流れてくるパケットの中身を見て、それを悪用するかもしれません。ですから、悪い人がいても問題ないようにするために SSL が使われます。逆の言い方をすれば、通信経路上に悪い人がいないことが保証されているならば、SSL は必要ないわけです。

通信経路上に悪い人がいる場合、その人はパケットを改竄できます。送り先が SSL 保護つきでも、フォームが非 SSL だとすると、たとえば

<form action="https://example.com">

という記述があったとして、通信経路上の悪い人はこれを改竄して

<form action=" http://example.com">

と変更する事が可能です。こうされると、非 SSL な URL にデータを送信してしまいますから、悪い人に読まれてしまいます。ですから、フォームも SSL にしなければいけません。

ここまではまあ良いと思いますが、ふと疑問に思ったのは、「非 SSL なフォームであっても、送信前に HTML のソースを確認して form の送信先を確認すれば安全なのか?」ということです。

ちょっと考えてみると、まずスクリプトが有効な場合は NG でしょう (DOM などで action属性 を書き換えることが出来るので、HTML ソースを見ただけでは判断できない)。また、たとえ https: であっても、送信先のドメインがよく分からないものであったらやはり駄目でしょう。

では、以下の条件全てを満たしている場合、そのフォーム送信は安全 (まともな SSL 保護つきフォームと同レベルの安全性がある) といえるのでしょうか。

ちょっと考えた限りでは、この条件全てが満たされていれば大丈夫なような気がするのですが、何か別な抜け道があったりするかしら……。

※もちろん、普通のユーザにはそんな条件満たせませんから、非 SSL のフォームは駄目という結論には変わりないわけですが……。ぶっちゃけると、私が非 SSL のフォームを使わされそうになっていて、そこから安全に送信したいという話です。:-)

関連する話題: HTML / セキュリティ / SSL/TLS / DOM

最近の日記

関わった本など