うなビジネスに最適実践にファイル名の妥当性を検証?
-
18-09-2019 - |
質問
ている"dilema"と思う事業にベストプラクティス
を使用していUploadifyアップロードす。その必要性を検証するためのファイル名を入力してからデータを保存してファイルです。
私たさまざまなソリューションが取得できなりでよい解決策です。
こちらは自criterias:
- ファイル名を必ずすべて小文字
- ファイル名などを含めないでくださいcharaters za-z0-9_-]
- しなければなファイル名を変更
どうすればファイル名は my.file(name).jpeg
?
私は爆発のファイル名に'.'を保存し、その後implodeのファイル名です。ないことになるのsoltion.
私は、以下の機能を受け取り、タクシー
function getExts($filename)
{
$exts = explode("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}
function validFilename($filename)
{
$filename = str_replace(" ", "_", $filename);
$pattern = "/[^[a-z0-9_-]/";
return preg_replace($pattern, "", strtolower($filename));
}
更新1
私は仔のファイルを$_FILES.それは私の次のデータ
- $_FILES[ファイル][名前]の名前をアップロードされたファイル
- $_FILES[ファイル]["の"]-タイプのアップロードされたファイル
- $_FILES[ファイル][サイズ]-サイズをバイト単位でのアップロードされたファイル
- $_FILES[ファイル]["tmp_name"]の名前を一時ファイルのローカル環境のコピーサーバに格納
- $_FILES[ファイル][エラー]のエラーコードによるファイルのアップロード
更新2
さん---。使ってみました getimagesize る配列を返します7。これらの要素[2]IMAGETYPE_XXX.
で使用することができました。るこのコード:
function getExts2($filename)
{
list(,,$type) = getimagesize($filename);
return $type;
}
ものみが返されますので2---
(もしてみましたexif_imagetypeでのみ取得 PHPのエラー:作します.)
解決
チェックファイル名と正規表現.利用情報mimetype.保存ファイルサーバとのmd5の名前です。実店舗ファイル名ます
他のヒント
pathinfo() ることができるファイル名とする。私に警告することができな試験のファイルの拡張を通じて検査のファイル名をしています。またる機能を実際に検査のバイナリファイルの内容ます。 finfo_file() を達成することができる。あとで痛みの利用 basename() ユーザ指定のファイルパスを防止するパフォーカストラバーサル攻撃ができます。
私はときの妥当性を検証ファイル名を使用してダウンロードファイル名です。
がこに保存ファイル名としてそのために、ユーザーからの技術的な観点からアプローチの音です。
まつのUrlのように見え、目標を国際的な聴衆の必ずいずれかに変換すUmlautsのベース文字に変換できる状態になります。ドイツのユーザー Umlauts N Á Ü β)この変換:
Ä = ae
Ö = oe
Ü = ue
中scandinaviansうさ
Ä => a
Ö => o
Ø => o
います。
そして、様々なアクセント付きの文字é á ó...
落としの方に完全につながるのUrlに見える 本当に bdやlok strngのbwsr住所br.
このうがおいしく、部屋も清潔でした。:
$filename = preg_replace('/[^[a-z0-9_-]/', '', str_replace(' ', '_', strtolower(pathinfo($filename, PATHINFO_FILENAME)))) . pathinfo($filename, PATHINFO_EXTENSION);
としてペッカ説明したい場合には全てのaccentuationのファイル名を使用でき次のような意味を持ちます:
function Unaccent($string)
{
return preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8'));
}
しないほうがいいと思いま"検証"のファイル名からは"修正"するものであれば、これかの形式をしています。理由を拒否するファイルが誰かに吸い込みでそれらのデータファイルの命名、または一部異文字がありますか?としあきさんの画像を使用でき getimagesize
と記することを確認し実際にはイメージしたアップロード(べきない画像)となっています。