投稿者 YuO  (社会人) 投稿日時 2012/11/28 10:33:41
> Dropboxのpublicフォルダに配置されているPass.txtに記入されている
> パスワードをVBで取得し、Textboxの内容と一致していればForm2を表示するプログラムを
> 作りたいと思ってます。ですが、やはりDropboxのほかにサーバーが必要となるのでしょうか?

セキュリティの面をまったく無視するならば,Pass.txtをダウンロードするだけですから,
Dim dropboxPassword = New WebClient().DownloadString(DropboxUri)

で取得できます。
# 実際には非同期処理にすべきであるため,このコードは推奨されません。

ただし,これは例えばFiddler ( http://www.fiddler2.com/fiddler2/ ) のようなプロキシ型のデバッガや,
Winshark ( http://www.wireshark.org/ ) のようなパケットキャプチャで通信を調べることで,
簡単にパスワードが取得できてしまいます。


セキュリティ面で安全なのは,サーバー側で認証を行うことです。
これにより,「正しいパスワード」の参考情報がサーバー側のみに存在するため,
クライアント側でいくらキャプチャしても送信したパスワード情報のみしか取得できないためです。
この場合,サーバー自身がパスワードやそれをハッシュした情報を持っているため,Dropbox自体が不要です。

サーバーを用意できない等の理由により,どうしてもクライアント側で認証したいとしても
パスワードそのまま (平文) を流せばパスワードがわかってしまいます。
なので,ハッシュ値を返すなどして,平文がわからないような工夫を必要とします。
クライアント側では,入力されたパスワードをサーバー側と同一の方法でハッシュ値を計算して同一のハッシュ値になることを確認することで,認証を行います。
# ユーザー名と固定値をソルト (パスワードの撹拌用情報) として使うなどの工夫は存在します。

なお,通常,暗号化ではなくハッシュを使います。
暗号化では復号可能であることが前提であるのに対して,ハッシュは復号不可能であることが前提だからです。