DOBON.NET DOBON.NETプログラミング掲示板過去ログ

セキュアなアップロード

環境/言語:[VB6]
分類:[VB6以前]

お世話になってます。
VBで作成したファイルをある条件でサーバへ自動的にアップロードするような
ソフトウェアを作っております。
この時、セキュリティを考慮してサーバへアップロードを行いたいのです。
例えば、SFTPやHTTPS等を使いたいと考えております。
具体的な方法が知りたいです。
webサーバは特に決めていませんがApacheには多少慣れています。
知っている方がおりましたらご教授お願いいたします。
セキュア構成かつ決まった拠点に送信なら
VPNを利用してみてはいかがでしょうか?
送信元と送信先の拠点数にもよりますが。

■No7926に返信(masaさんの記事)
> お世話になってます。
> VBで作成したファイルをある条件でサーバへ自動的にアップロードするような
> ソフトウェアを作っております。
> この時、セキュリティを考慮してサーバへアップロードを行いたいのです。
> 例えば、SFTPやHTTPS等を使いたいと考えております。
> 具体的な方法が知りたいです。
> webサーバは特に決めていませんがApacheには多少慣れています。
> 知っている方がおりましたらご教授お願いいたします。
>
VPNを張ってその中で通信を行うということでしょうか?
VBを用いてVPNを張るということではないですよね。
かなり多数からのアクセスを想定しております。
送信先(サーバ)は1箇所ですが、
VBで作ったアプリケーションから多数のアクセスを想定してます。
このような場合にセキュリティを確保する方法として
他にもありましたら教えていただけますでしょうか。
やはり、ファイルのアップロードにセキュリティを確保することは
難しいのでしょうか。
暗号化をしてから送信するという方法が容易になるのでしょうか。
よろしくお願い致します。
付け足しになりますが、
VBにてある条件で吐き出されるファイルを、
HTTPでアップロードする方法として、
ブラウザのアップロードCGIの制御を行うことで
ファイルをアップロードを考えていますが、
その場合に異なる名前で連続生成されるファイルを
自動的にwebブラウザに読み込んでアップロードすることは可能でしょうか。
また、このときにSSL通信をさせることは可能でしょうか。
2004/12/08(Wed) 10:52:15 編集(投稿者)

サーバ側の技術が、なんでもいいのであれば
HTTPS+Webサービスとかはどうでしょうか?
VB6から駆動するとなるとSOAP Toolkitが必要になりますね。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/soap/htm/soap_sam_intro_89bi.asp
この例はVBScriptからwebサービスを利用しています。

もしくはWebDAVとかはいかがですか?

どちらにしろ、アップロード元が不特定多数である場合は、
成りすまされない為の認証技術の実装は必要ですね。

■No7930に返信(masaさんの記事)
> 付け足しになりますが、
> VBにてある条件で吐き出されるファイルを、
> HTTPでアップロードする方法として、
> ブラウザのアップロードCGIの制御を行うことで
> ファイルをアップロードを考えていますが、
> その場合に異なる名前で連続生成されるファイルを
> 自動的にwebブラウザに読み込んでアップロードすることは可能でしょうか。
> また、このときにSSL通信をさせることは可能でしょうか。
Mooさんご助言ありがとうございました。
SOAPというのは初めて聞いたもので検索してみました。
この機能でファイルをアップロードもできるんだなということはわかったのですが
サンプルが自分には理解しきれない部分があります。
SOAPというのはXMLの連帯でよく話しが持ち上がっているように思いますが、
それは、機能の一部と考えたほうがよいのでしょうか。
更に詳しく調べてみます。

少し話がずれてしまうので新しくスレを立てようと思いましたがこちらに書かせていただきます。
HTTPプロトコルを用いてセキュアなアップロードを行いたいということは変わりませんが、
色々考えたところ、ファイルではなくてデータをHTTPのサーバに送る形にしたいと
思いました。
あらかじめCGI等でwebフォームを作っておき、そのフォームからデータをPOSTする作業を
VBで行いたいということです。
初心者的な考えかもしれませんが、
HTTPプロトコルでは結局テキストの送受信を行っているので先に述べたフォームをサーバ側
に用意しておけば、
後は、VBからHTTPセッションを確立したあとに、送るべきテキストデータをPOST
すれば、フォームから値を入力して送信ボタンを押すことと同じことができるのではと
考えております。
TCP通信に関するVBのコントロールを検索してみたところ、いくつか見つかったのですが
どれを使うのが適当なのかよくわかりません。
というか、サンプルプログラムを理解しきれないのだと思います。
PG初心者なのでできればなるべく確実に実現したいと考えております。
自分でも探してみたのですが、
Microsoft Internet Transfer Protocol 6.0というコントロールを使って
この機能を実現することはできますでしょうか。
Wininetを利用するよりもOCXコントロールの方が簡単にできると思いました。
また、でHTTPSもサポートしているようですし。
ご教授よろしくお願いいたします。
2004/12/14(Tue) 11:35:24 編集(投稿者)

■No8032に返信(masaさんの記事)
> PG初心者なのでできればなるべく確実に実現したいと考えております。
> 自分でも探してみたのですが、
> Microsoft Internet Transfer Protocol 6.0というコントロールを使って
> この機能を実現することはできますでしょうか。
> Wininetを利用するよりもOCXコントロールの方が簡単にできると思いました。
> また、でHTTPSもサポートしているようですし。
> ご教授よろしくお願いいたします。

Microsoft Internet Transfer Protocol 6.0については
まったく知識がありません。初めて聞いたので、
情報の出所を教えていただけませんでしょうか?
検索エンジンでもヒットしないようなので...

識者のアドバイスを待つことにしましょう。

ちなみに確認ですが、サーバ側はIISではないのですか?
返信ありがとうございます。
サーバは少しマイナーかもしれませんがZOPE+Apacheで実現しようと
考えております。
サーバ側の実装次第ですが、HTTP/HTTPSで送るなら、
XMLHTTPオブジェクトを使うのが簡単かと思いますよ。
VB6からでもVBScriptからでも使えますし。

「Microsoft XML, v4.0」を参照設定して(他のバージョンでも可)、
    Dim X As MSXML2.XMLHTTP
    Set X = CreateObject("MSXML2.XMLHTTP.4.0")
    X.open "POST", "https://〜", False
    '
    '追加のヘッダが必要なら、setRequestHeaderメソッドも実行
    '
    X.send CVar(送信データ)
って感じです。
ご返答どうもありがとうございます。
XMLHTTPオブジェクトというものが存在することを始めて知りました。
この構文の使い方について詳しく知りたいのですが、
例えばどんな風に記述すればよいのでしょうか。
以下のようにすればクリックしたときに"test.cgi"に対して
SUBMITを押した時にサーバに送られる文を送信したということになるのでしょうか。
値の部分を動的に変化させることも可能でしょうか。
よろしくお願いします。

Private Sub Command1_Click()
Dim X As MSXML2.XMLHTTP
Set X = CreateObject("MSXML2.XMLHTTP.4.0")
X.open "POST", "https://localhost/test.cgi", False
X.send CVar(
実際サーバに対して送っている文
)

End Sub
話が少しずれてきてしまったのでスレを立て直したいと思います。
どうもありがとうございました。
またよろしくお願いします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板