tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルファイルのアップロード
記事No3821
投稿日: 2006/06/12(Mon) 18:16
投稿者むらた
WindowsXP HomeEdition Visual Basic.net2003

お世話になります。
Webclientを使い、ファイルをWEB上にアップロードとダウンロードを考えています。
ダウンロードは問題なかったのですが、アップロードでは
「リモートサーバーがエラーを返しました。(404)見つかりません」となります。

ローカル上には確かにあるファイルをアップロードしているのですが、
なにがおかしいのでしょうか。

WebClient.UploadFile(Url_Pass & "/A.txt", Application.StartupPath & "
;\A.txt")

[ツリー表示へ]
タイトルRe: ファイルのアップロード
記事No3822
投稿日: 2006/06/12(Mon) 18:19
投稿者むらた
先ほど投稿した中で;\A.txt")となっていますが、
実際に;は入っていません。投稿のときに誤って入れてしまいました。

[ツリー表示へ]
タイトルRe: ファイルのアップロード
記事No3823
投稿日: 2006/06/12(Mon) 21:13
投稿者魔界の仮面弁士
# Path と Pass では、意味が異なりますよ。

> WebClient.UploadFile(Url_Pass & "/A.txt", Application.StartupPath & "\A.txt")

Url_Pass という変数の内容は、どのようになっているのでしょうか。
『Url_Pass & "/A.txt"』で表されるアドレスが、サーバ上に存在している正しい URL で
あるかどうかを、もう一度確認してみてください。

URL に間違いが無いようであれば、Webサーバ側のセキュリティ設定において、
ファイルのアップロードが制限されていないか、サーバ管理者に問い合わせてみてください。
(Webサーバ側の通信ログを確認してもらうのも良いでしょう)

また、『Application.StartupPath & "\A.txt"』で示されるファイルの
読み取りアクセス権があるかどうかも、あわせてチェックしておいてください。

[ツリー表示へ]
タイトルRe^2: ファイルのアップロード
記事No3825
投稿日: 2006/06/13(Tue) 09:23
投稿者むらた
有難うございます。
早速、ご教授頂いた数点を確認いたします。

[ツリー表示へ]
タイトルRe^3: ファイルのアップロード
記事No3826
投稿日: 2006/06/13(Tue) 11:20
投稿者むらた
ご教授頂いた数点を確認したのですが、問題はなさそうです。
Url_Passには客先のhttpから始まるURLが代入されています。

サーバーのログを見るとサーバーにa.txtが見つかりませんといエラーでした。
アップロードですので、もともとサーバーにa.txtは無くて良い筈なのですが、
このようなメッセージが出てしまいます。

試しに自社のURLを指定しても同じでした。

何がおかしいのか全く検討がつかず、納期が迫る一方です。

一つ疑問に思ったのですが、WebClient.UploadFileを使ってアップロードする
場合にIDやパスワードを指定することが無いのですが、これでよいのでしょうか?

これでは誰でもアップロードが可能です。
誰かにサーバーへウィルスをアップロードされる事もあるのではないでしょうか?

何か私の指定が間違っているのでしょうか?
ダウンロードは問題なく出来ています。

[ツリー表示へ]
タイトルRe^4: ファイルのアップロード
記事No3834
投稿日: 2006/06/13(Tue) 15:27
投稿者魔界の仮面弁士
> サーバーのログを見るとサーバーにa.txtが見つかりませんといエラーでした。
POST 要求によるアップロードは、許可されているのでしょうか?
また、他のHTTPメソッド(例えば、.Upload(url, "PUT", file)など)ではどうですか?


> 一つ疑問に思ったのですが、WebClient.UploadFileを使ってアップロードする
> 場合にIDやパスワードを指定することが無いのですが、
やりとりがDMZ内に限定されるような場合には、そういう運用もアリかも知れませんが、
通常は、何らかのセキュリティ対策を施した方が良いのでは無いでしょうか。

> これでよいのでしょうか?
……と尋ねられても、こちらはそちらのシステムの仕様・要件を知りませんので、
パスワード無しで良いかどうかの判断はできかねます。(^^;

そもそも、どの認証方式を採用する予定になっているのでしょうか。
具体的な認証方式などが定まらないと、その後の開発を進められないかと思いますので、
そのあたりは、担当者の方々(システムエンジニア、アーキテクトなど)と相談してみてください。


たとえば、統合Windows認証を用いているような場合は、
  .Credentials = System.Net.CredentialCache.DefaultCredentials
で対応できるかと思いますし、BASIC認証+サーバSSL証明の場合には、
  .Credentials = New System.Net.NetworkCredential(user, pass)
で指定することができるでしょう

また、Credentials で対応できない物に関しては、Headers による
カスタムヘッダで対応できる物もあるかもしれません。

……ですが、それらでは対応できないような認証方法を採用する予定であれば、
WebClient.UploadFile 以外の方法が必要となってくる可能性もあります。



> これでは誰でもアップロードが可能です。
確かに、むやみにアップロードされないような対策は必要でしょうね。
それは、HTTPだろうがFTPだろうが、同じことではありますけど。

たとえば、
・VPNの利用を検討する。
・書き込み可能なフォルダを限定しておく。
・接続可能なクライアントを、防火壁などで制限しておく。
・大量のアップロードを避けるため、クォータ制限をつける。
・アクセス可能となる時間帯を制限する。
とか……。


> 誰かにサーバーへウィルスをアップロードされる事もあるのではないでしょうか?
とりあえず侵入自体は、サーバ内の「ウィルス対策ソフト」でブロック可能でしょうし、
たとえ侵入してしまったとしても、そのファイルをに実行するような仕組みが無い限りは、
感染の可能性は低いかと思います。……ただ、セキュリティホールを衝かれた場合は別ですが。

[ツリー表示へ]