• ベストアンサー

ファイルアップロードでセキュリティを確保するには?

ウェブサイトからformで情報を送信する場合、少なくともSSL等で通信内容を暗号化しないと中継されたサーバーなどで容易に通信内容を見ることができると思いますが、input type=file タグでのファイルアップロードで顧客データのCSVファイルやテキストファイルをアップロードした場合でも同じでしょうか? FTPでもSSL等を使わないと通信内容はつつぬけなのでしょうか?

  • CGI
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

> 「メールのセキュリティははがき程度」と聞きますが、それはそういう仕組みで成り立っていると思うのですが、FTPでも同じということでしょうか? ↑「そういう仕組み」って何を指しているのでしょう? 何はともあれ暗号化をしていない通信は全て第三者に内容がバレると思っていいでしょう。 (暗号化してあっても暗号強度が低ければダメですが) > 「パケット」は悪意を持って盗聴をしかけられた場合のみ盗まれるものなのか そうです。 (必ずしも悪意かどうかはわかりませんがね) > 中継されたサーバーの管理者がログなどを見る程度の通常の範囲で簡単に見れるものでしょうか? 通信が終わった後の簡単なログでは何を送受信していたのかはわかりません。(パケット内容そのものを記録していれば別ですが) 分かるのは、通信者のホスト・IPアドレス・ポート・プロトコルぐらいでしょう。 (盗聴は普通リアルタイムでしないといけませんので) > 自社サーバーでファイアーウォールの設定とかきちんとされていればCGI等もFTPでアップロードすることはないと思うのですが。 ん? ファイアーウォールは不正なパケット等からファイアーウォールの内側のネットワークを守るものですのでこの件とは特に関係ないと思いますけど・・・。

longname
質問者

補足

中途半端な知識で会話して申し訳ありません。 それゆえ、いろいろもやもやした部分をお聞きしておりまして、もう少しお付き合い願えますとありがたいです。 暗号化してない通信が、盗聴/改ざんなどの危険があるというのは認識しています。 第3者の関係ないサーバーにどの程度まで筒抜けになってしまうのかが気になってます。(悪意あるなしにかかわらず) パケット内容を記録すれば完全な通信内容を再現できる? それがいわゆる盗聴ということでしょうか? もしくは、あるところからの通信を盗聴しようと思ってリアルタイムに記録するよう何かしかけないと盗聴にはならないのでしょうか? 盗聴されるとどこかに痕跡が残るのでしょうか? 顧客データはもちろんのこと、プログラムも、本当はセキュアな経路上でアップロードしないといけないのでしょうか。一般的にそこまでやっているようには思えないのですが。 ファイアーウォールの話は、「リモートでサーバーに対して操作したりファイルをアップロードするには全てSSLなりVPNなり安全な経路を確保しなければならないのだろうか? (もちろん完全にセキュアにしようと思えばそういうところにいきつくだろうけど)そこまでやるのが一般的か?」 というところから沸いてきた例えですので、あまり気にしないで下さい。 メールの話もそんなに気にしないで下さい。

その他の回答 (2)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.3

> パケット内容を記録すれば完全な通信内容を再現できる? そうなると思いますよ。(全て記録できれば) > それがいわゆる盗聴ということでしょうか? > もしくは、あるところからの通信を盗聴しようと思ってリアルタイムに記録するよう何かしかけないと盗聴にはならないのでしょうか? 一部分だけでも盗聴になります。 必ずしも全てが必要とは限りませんし。 でも、盗聴する側は盗聴した内容から価値のある内容を絞り込む必要があるでしょうね。 > 盗聴されるとどこかに痕跡が残るのでしょうか? 残らないと思った方がいいでしょう。 > 顧客データはもちろんのこと、プログラムも、本当はセキュアな経路上でアップロードしないといけないのでしょうか。 > 一般的にそこまでやっているようには思えないのですが。 私はどこぞの企業等の人間ではないので(学生ですので)実際のところどうなのかは知りませんが、外部のネットワークを経由するもので、見られてはまずいものは暗号化なりした方がいいと思います。

longname
質問者

お礼

長々とお付き合いありがとうございます。 色々と参考になりました。 まだ分からない部分はありますが、また別の機会にいたします。

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1

> テキストファイルをアップロードした場合でも同じでしょうか? もちろん同じです。 > FTPでもSSL等を使わないと通信内容はつつぬけなのでしょうか? 見ることができないのならSSLを使った通信技術が開発されるわけがありません。(盗聴できないならSSLとか作る必要がないんですから) まあ、パケットを盗み見されなきゃ生でもいいんですがね。(その前に盗む方もデータにそれなりの価値がないと盗まないでしょうし・・・)

longname
質問者

補足

>まあ、パケットを盗み見されなきゃ生でもいいんですがね。 >(その前に盗む方もデータにそれなりの価値がないと盗まないでしょうし・・・) 補足をお願いしてもよろしいでしょうか? 「メールのセキュリティははがき程度」と聞きますが、それはそういう仕組みで成り立っていると思うのですが、FTPでも同じということでしょうか? 「パケット」は悪意を持って盗聴をしかけられた場合のみ盗まれるものなのか、中継されたサーバーの管理者がログなどを見る程度の通常の範囲で簡単に見れるものでしょうか? めったにFTPにまでSSLは使わないと思っていたのですが。 自社サーバーでファイアーウォールの設定とかきちんとされていればCGI等もFTPでアップロードすることはないと思うのですが。サーバーをホスティングサービスなどを利用している場合、管理用プログラムなどけっこうFTPでアップロードしていると思うのですが。 最近良く利用しているホスティングサービスはFTPもSSL対応になったので、やっぱりそういう要望も多かったのでしょうね。

関連するQ&A

  • アップロードに関するセキュリティ

    有害ファイルのダウンロードを防ぐには セキュリティソフトやルーターを使用しますが、 ファイルのアップロードの読み取りを防ぐには何かありますか? 個人情報の送信にはSSL通信である程度防げますが、 ホームページにアップするFTPソフトのセキュリティはどうなのでしょうか? 第三者に読み取られる可能性は高いですか?

  • Perlでファイルをアップロードしたい

    えーPerlを使用してローカルからサーバーへFTPを使わず、かつパスを指定してファイル(CSV)をアップロードさせたいのですが、フォームの<input type="file"...>ではファイルを参照ボタンで指定せなだめなため使いたくないのです。一瞬フォームから<input type="hidden">を使用してファイルの中身をデータにして送りサーバでファイルを作ろうかとも考えたのですがサーバ側に負担がかかりそうで・・・教えてください。お願いします。

  • Perlでファイルをアップロードさせたい

    えーPerlを使用してローカルからサーバーへFTPを使わず、かつパスを指定してファイル(CSV)をアップロードさせたいのですが、フォームの<input type="file"...>ではファイルを参照ボタンで指定せなだめなため使いたくないのです。一瞬フォームから<input type="hidden">を使用してファイルの中身をデータにして送りサーバでファイルを作ろうかとも考えたのですがサーバ側に負担がかかりそうで・・・教えてください。お願いします。

    • 締切済み
    • CGI
  • phpでftpのアップロードができないのですが・・・

    phpでftpコマンドを使ったアップロードができません。どこが間違っているのでしょうか。 ftpで接続してログインするところまでは間違いなくできているのですが・・・よろしくお願いします。 file.php のフォーム部分 <form enctype="multipart/form-data" action="fileupload.php" method="post"> <input type="FILE" name="File"><br>     <input type="SUBMIT" value="送信">     <input type="RESET" vaiue="取消">     </form> fileupload.php のアップロード処理部分 //アップロード後のファイルの名前を仮にaaa.txtとする $file2 = "/public_html/aaa.txt"; if(isset($_REQUEST["File"])){ $file=$_REQUEST["File"]; } $ftp = ftp_connect($hostname) or die("接続失敗"); ftp_login($ftp,$user,$pass) or die("ログイン失敗"); ftp_put($ftp, $file2 , $file , FTP_ASCII) or die("アップロード失敗");

    • ベストアンサー
    • PHP
  • ファイルのアップロードに関して

    phpでファイルのアップロードをするプログラムを作成しています。 当初 move_uploaded_file を使い意外と簡単に作れたのですが、ファイルの所有者がApacheになってしまいます。 何故、ファイルの所有者が Apache でまずいのかというと、ユーザーの使用域を quota で制限しているのですが、所有者がApacheになっていると、制限ができません。 (ユーザーのエリアにアップロードしても、ユーザーが Apache になっていると、使用済み容量が増えません。) そこで、アップロード後 chown で所有者を変更しようと思いましたが、ルート権限でないと変更できないようで、うまく行きませんでした。 マニュアルを見ていると ftp_connect で接続し ftp_login でログインしてから ftp_put で転送してやれば所有者をログイン時のユーザーにできそうと思い作成したのですが、 <FORM method="post" action="hoge.php" enctype="multipart/form-data"> : : <input name="userfile" size="60" type="file"> では、hoge.phpに転送元のファイル名がうまく引き渡されません。 よい知恵はないでしょうか。 尚、サーバー側の環境は Fedora 1 Apache/2.0.48 PHP Version 4.3.4 です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • FTPによるダウンロード、アップロードのセキュリティについて

    ECサイトのシステムの開発で、ちょっと分からないことがあります。 楽天やMakeShop、EストアなどのECサイトのシステムではどれも、注文情報(バリバリ個人情報を含む)のデータをCSVでダウンロードできる機能がありますが、あの場合のセキュリティはどうなっているのでしょうか? ブラウザで普通にダウンロードできてしまいますので、SFTPなどの技術で暗号化されているわけじゃありませんよね? また、クロネコペイメントとか、ドロップシッピングのシステムなどは、逆にブラウザからCSVファイルをアップロードするようになっていますが、これも暗号化されているとは思えません。 SFTPであればセキュアな通信ができるそうですが、その場合はサーバーとクライアント双方でSFTPに対応していなければならないのでしょうか。今回の開発は、ブラウザを使用したシステムなのです。 周りの人に聞き回ったところ、「FTPはインターネット上を平文のまま飛んでいくので、セキュアとは言えない通信方式だ」という見解が多いのですが、それなのに何故公然と大手のIT企業がどこもこの方式で個人情報を転送させているのかが解せません。それとも何かセキュリティ対策が施されているのでしょうか。 どなたか、セキュリティに詳しい方の見解をお聞かせ願いたいと思います。

  • PHP用ファイルアップロード機能について

    ドコモ端末でPHPのファイルアップロード機能を使えるようにしたいのですが、どのようにすればいいでしょうか? ちなみに、vodafoneならこの機能が使えます。 ドコモ端末で下のソースにアクセスすると、 ファイルを参照するボタンが見えず、ファイルをアップロードできません。 HTMLはキャリア毎に使えるタグがあるのは知っていますが、下のソースの場合はどのように変更すれば良いのでしょうか?ご教授下さい。宜しくお願いします。 #ソースはコレです。 <form method="post" action="upload_save.php" enctype="multipart/form-data"> <input type="hidden" name="max_file_size" value="1000000" /> <input type="file" name="upload_file" size="70"><br /> (上書き禁止) <input type="checkbox" name="forbidden" value="1" checked /> <input type="submit" value="アップロード" /> </form> #ファイル自体はphpですが、中身はほぼHTMLに関する質問になってしまい、申し訳ありません。

    • ベストアンサー
    • PHP
  • ファイルのアップロードができません

    今日始めたばかりの初心者です。 PHPだとCGIに比べ、ファイルのアップロードとか画像の処理が簡単に行えそうなのでチャレンジしてみたのですが、いきなりつまづいてしまいました。 とりあえずファイルをアップロードしてみようと思い、下のようなサンプルをアップロードしてみたのですが、さっぱり動きません。 適当なjpgファイルをアップロードすれば、スクリプトのあるディレクトリに”aaa.jpg”という名前で保存すると思うのですが…。 最後の”var_dump($_FILES);”という命令で、アップロードされたファイルの内容を表示させてるはずなのですが、ファイル送信前も後も”array(0) {}”としか表示されません。 PHPのバージョンは4.34です。 どなたかご教授お願いします。 ************************ <form enctype="multipart/form-data" method="post"> Upload File:<input name="userfile" type="file"> <input type="submit" value="Send File"> </form> <pre> <?php if (!empty($_FILES)) { move_uploaded_file($_FILES['userfile']['tmp_name'],'aaa.jpg'); } var_dump($_FILES); ?> </pre> ************************

    • ベストアンサー
    • PHP
  • jQueryでファイルアップロード

    お世話になります。 jQueryでファイルアップロードの処理をしたいのですがやり方を教えて下さい。 Googleで検索すると色んなプラグインが出てくるのですが全体像がわからない為上手く動作してくれません。 やりたいのは、入力画面-->確認画面-->結果確認画面と遷移させてファイルをアップロードする処理です。 <画面仕様> (1)入力画面 ・氏名等の入力とアップロードするファイルの選択 ・アップロードファイルサイズのチェック (2)確認画面 ・入力画面で入力した内容の確認 ・アップロードするファイルの確認(個数、合計サイズ) (3)結果確認画面 ・アップロード処理結果の確認 ※実際のアップロードが入力画面でファイルを選択した直後に行われても構わない 嵌っているのは、入力画面でFORMのonsubmitと<input type="file">の両方を同時に設定できない事です。 FORMのonsubmitでは入力内容のチェックを、<input type="file">ではファイルのアップロードを行い、アップロードしたファイル名を隠しフィールドで確認画面に送りたいのですが、個々に指定するとそれなりに動くのに両方指定するとsubmitが優先されてしまい、<input type="file">のchengeイベントが動きません。 どうしたら良いかご教示下さい。 中途半端なソースですが、入力画面で私がやりたいことをコードにしてみました。 よろしくお願いします。 $(function() { $('#fileId').change(function() { $(this).upload('upload.php', function(res) { $(res).insertAfter(this); }, 'html'); }); }); <form id="form1" name="form1" action="confirm.php" method="post" enctype="multipart/form-data" onsubmit="return error_check();"> <input type="file" name="upload_file1" id="fileId" />

  • ファイルのアップロードについて

    初めて投稿させていただきます。 今、WindowsNT4.0+SP6,IIS+ASPでファイルのアップロードを考えています。 調査している中で、basp21を使用してファイルをアップロードするところまでわかったのですが、その後すこしつまずいています。 basp21を使用してファイルを送信する場合、HTML上に<input type="file" name="strName">というタグを明記し、ファイルを送信する場合には、このタグに該当するファイルの絶対パスを明記するとは思うのですが、これを固定のファイル名にしたいのです。 試したこととして<input type="file" name="strName" value="c:\test.text">という形で明記しましたが、表示されませんでした。 ブラウザーはIE6.0およびNetscape 6.1を使用しております。 よろしくお願いします。

専門家に質問してみよう