2022/07/12
定期的にこの記事へのアクセスがあります。
記事から6年経ってますが何でしょう…
エスパーすると、上司や顧客から「アップロード前に選択したファイルが正しいか確認したいからパスを出せ!」とか言われてるんじゃないでしょうか。
クライアントPCのフォルダパスを見せるまたは、JavaScript/サーバ側で使える事がセキュリティ上危険だと分かって欲しい物ですね…
2016/08/31
内容は理解して無いが、chrome でも同じです。
.value で何が取れるかは検証してませんが…
セキュリティを考えると、当たり前なんだけどねぇ…
今日、IE8でテストしていると、ファイルのアップロード時に
「c:\fakepath\aaa.txt」 とフォルダ名が「fakepath」となり、「変だっ!」と指摘された。
そこで調べてみたら、IE8では標準として、<input type="file" />タグは、
ディレクトリが正しく表示されないことがわかった。
で、JavaScriptの ".value" で値を取得した時に「fakepath」のディレクトリ名称が
取得できてしまうらしい。
ネットで調べると皆さん「セキュリティーの設定を直す」や「信頼済みサイトに設定してくれ」と 注意、変更依頼を行っています。
そこで問題です。
なぜ、ファイルパスを JavaScriptの".value"で取得する必要があるのでしょうか?
1.<input type="file" />タグは読み取り専用です。
2.参照ボタンも勝手に付いていて、ブラウザがパスを自動生成します。
という事は「ファイルの存在チェック」や「拡張子チェック」はサーバー側でしか出来ない筈なんですよね。
クライアント側のファイルパスなんてサーバ側では意味ないし…
もちろん、VBSなんかを使って無理やりやることは出来ますが…
そういう無理やりな要求を出すんだから、「IE8対応」で金を出させるべき(営業ががんばれ)でしょう。
ま、例外はさておき、普通に作っていたら意識しなくて良かったんですよね。
(表示上の問題はさておき…)
ちょっと思ったのでメモ程度で…