ColdFusion 10 cffile アップロード時のファイルチェックの挙動に関する参考情報

<cffile>タグによるファイルのアップロード時のファイルチェックは、これまでアップロードするファイルの拡張子、またはMIMEタイプのチェックのみ可能でした。ColdFusion 10からはチェック機能が強化され、ファイルの先頭から数バイトを読み込んでMIMEタイプを判別することが可能です。

詳しくは、下記のオンラインマニュアルに掲載されています。ただ、こちらで確認した限りですが、マニュアルの内容と一部動作が異なるため、参考情報として、確認した内容をご紹介します。

 

該当記事
http://help.adobe.com/ja_JP/ColdFusion/10.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fa1.html

 

ファイルチェック処理について

  • ColdFusion 9 … <cffile>タグの accept 属性で、受け入れるファイル拡張子、または、ファイルのMIMEタイプを指定
  • ColdFusion 10 … accept属性による指定はColdFusion9と同様。ただし新たに追加されたstrict属性(true または false)の指定方法によって、チェック方法が異なる

 

(ColdFusion 10)ファイルチェック処理のマニュアルの誤りについて

  • 該当記事の説明では、新たに追加された strict 属性のデフォルト値は「false」と紹介されていますが、こちらで動作を確認した限りではデフォルト値は「true」として動作しています(ColdFusion 10 Update 11 現在)。

 

マニュアルの誤りに伴う処理の影響について

  1. accept属性に、拡張子のみを指定した場合(例:accept=".xls")
    • strict属性を指定しなかった場合、あるいはstrict="true"を指定すると、「属性STRICTの値がTRUEの場合、有効なMIMEタイプが属性に必要です: ACCEPT」エラーが発生します。
    • 旧バージョンで動かしているプログラムで拡張子のみを指定したファイルチェックを行っている場合は、ColdFusion10に移行する際に明示的に strict="false" を <cffile>に追加して下さい。

       
  2. accept属性に、MIMEタイプのみを指定した場合(例:accept="application/vnd.ms-excel,application/pdf")
    • strict属性を指定しなかった場合、あるいはstrict="true"を指定した場合は、アップロードしたファイルの先頭数バイトが読み込まれてMIMEタイプが決定します。
      • これはColdFusion10から追加された新しいファイルチェックですが、MIMEタイプが実際とは異なる結果となる場合があります。
        • 例:Excelファイルのみを受け入れる設定を行い(ACCEPT="application/vnd.ms-excel")、実際に .xls のファイルをアップロードしたら、MIMEタイプが application/msword と判定され、アップロードできなかった。
      • 対策としては、MIMEタイプの追加が可能な場合(上記の例だと application/msword も追加して良い場合)はその対応を、不可能な場合は、strict="false"を<cffile>に追加して、旧バージョンと同様の動きに戻します。
    • strict="false"を指定した場合は、旧バージョンと同様のアップロードされたファイル拡張子に対応するtypeでのチェックが行われます。

       
  3. accept属性に、拡張子とMIMEタイプの両方を指定した場合(例:accept=".doc,application/vnd.ms-excel")
    • strict属性を指定しなかった場合、あるいはstrict="true"を指定した場合は、拡張子のチェックは無視され、MIMEタイプのチェックのみが行われます(その際は、2.と同様にファイルの先頭数バイトを読み込んでのチェックとなります)。
    • strict="false"を指定した場合は、accept属性に指定された値の順にチェックが行われます。例えば、accept=".doc,application/vnd.ms-excel" の場合は、最初に拡張子.doc のチェックが行われて、続いて MIMEタイプの application/vnd.ms-excel のチェックが行われます(MIMEタイプのチェック方法は旧バージョンと同様の動きとなります)。

 

補足情報

旧バージョンの動作は、strict="true"の場合に比べてセキュリティは低いため、プログラムによるファイルのチェック等、必要なセキュリティを維持する事をご検討下さい。

ColdFusion 10 のオンラインマニュアル(英語ページ)が更新され、<cffile>タグのファイルアップロード時の strict 属性のデフォルト値は true と紹介されました。(※日本語のオンラインマニュアルページは更新されていません)
https://learn.adobe.com/wiki/pages/viewpage.action?pageId=87505342

 


 


記事公開日:2013年08月26日
最終更新日:2013年09月10日


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.