パスに $_GET を使用して画像を表示しても安全ですか? たとえば、次の形式を使用します: image.php?path=/images/example.jpg
質問する
409 次
3 に答える
2
basename($_GET['path'])
ファイル名で使用した後にパスが存在することを確認すると、完全に安全です。画像フォルダーへのパスも定義します。
次に、 が付いた画像であることを確認しgetimagesize($path)
ます。失敗した場合は、ファイル名を見つからない画像などに変更します。
<?php
$path_to_images = '/images/';
$not_found_img = './path/to/not_found_image.jpg';
// check path is set and not empty
if(empty($_GET['path'])){
$path = $not_found_img;
}else{
$path = $path_to_images.basename($_GET['path']);
// check that image exists
if(!file_exists($path)){
$path = $not_found_img;
}else{
//Check if image
if($img_size = getimagesize($path)) {
//alls good $path validated
}else{
$path = $not_found_img;
}
}
}
// do somthing with your $path
?>
于 2013-04-30T11:09:30.960 に答える
2
はい、できますisset
。誰かがあなたの URL をいじった場合に未定義のインデックスがスローされないように使用してください。また、パスが有効かどうかを確認する必要がありalt
ます。
if(isset($_GET['index'])) {
echo '';
}
探すべきポイント: -
- 誰でもURLをいじることができます
- 値をサニタイズする必要があります
- パスは頻繁に変更されるため
alt
、画像が見つからない場合は必ずテキストを使用してください - サニタイズしないと、ハッカーの簡単な侵入につながります
要するに、そうしないことをお勧めします
于 2013-04-30T10:48:14.873 に答える