最近Yiiにサイトを作ったので、CMultiFileUploadを使用してファイルをサーバーにアップロードする際にそのような穴を発見しました(Mx21に特に感謝します )。 。 「accept」プロパティには、たとえば「jpeg | jpg | gif | png」という値がありますが、 この種類の写真以外はアップロードしないでください。ファイルは問題なくサーバーにアップロードされ、最終ファイルの.jpgは切り捨てられ、ソースファイルは名前を変更する前の拡張子でサーバーに表示されました。
私たちが使用しているフレームワークのバージョンは1.1.8です。
次のように扱われます。
/framework/web/js/jquery.multifile.jsファイルで、222〜223行目を修正する必要があります。
if(MultiFile.accept && v && !v.match(MultiFile.rxAccept))//{ ERROR = MultiFile.STRING.denied.replace('$ext', String(v.match(/\.\w{1,4}$/gi)));
代わりに、次のコードに置き換えます。
var str=this.value; var pattern='\.'; var pos = str.indexOf(pattern); for (var count = 0; pos != -1; count++) pos = str.indexOf(pattern, pos + pattern.length); if((MultiFile.accept && v && !v.match(MultiFile.rxAccept)) || count>1)//{ ERROR = MultiFile.STRING.denied.replace('$ext', String(v.match(/\.\w{1,4}$/gi)));
つまり ダウンロードしたファイルの名前にポイント数のチェックを追加しました。複数のポイントがある場合、「無効なファイルタイプ」というエラーメッセージが表示されます。