:
Text: mysql_real_escape_string($myVar);
Number: (int)$myVar;
내가 $myVar = $_FILE['myFile'];
에 의해 주어진다 배열을 파일과 유사한 것을 사용 하는가?
:
Text: mysql_real_escape_string($myVar);
Number: (int)$myVar;
내가 $myVar = $_FILE['myFile'];
에 의해 주어진다 배열을 파일과 유사한 것을 사용 하는가?
파일 이름을 삭제하는 것은 매우 중요합니다.
예를 들어 Windows에서 허용되는 모든 문자가 * nix에서 허용되는 것은 아니며 그 반대의 경우도 있습니다. 파일 이름은 상대 경로도 포함 할 수 있으며 업로드되지 않은 다른 파일을 덮어 쓸 수 있습니다.
이 업로드 기능은 here
function Upload($source, $destination, $chmod = null)
{
$result = array();
$destination = self::Path($destination);
if ((is_dir($destination) === true) && (array_key_exists($source, $_FILES) === true))
{
if (count($_FILES[$source], COUNT_RECURSIVE) == 5)
{
foreach ($_FILES[$source] as $key => $value)
{
$_FILES[$source][$key] = array($value);
}
}
foreach (array_map('basename', $_FILES[$source]['name']) as $key => $value)
{
$result[$value] = false;
if ($_FILES[$source]['error'][$key] == UPLOAD_ERR_OK)
{
$file = ph()->Text->Slug($value, '_', '.');
if (file_exists($destination . $file) === true)
{
$file = substr_replace($file, '_' . md5_file($_FILES[$source]['tmp_name'][$key]), strrpos($value, '.'), 0);
}
if (move_uploaded_file($_FILES[$source]['tmp_name'][$key], $destination . $file) === true)
{
if (self::Chmod($destination . $file, $chmod) === true)
{
$result[$value] = $destination . $file;
}
}
}
}
}
return $result;
}
에서 가져온 중요한 부분은 다음과 같습니다
1) 파일이 상대 경로를 포함하지 않는 있는지 확인하십시오.
2) ph()->Text->Slug()
3) md5_file()
을 대체되고, 이는 추가된다 같은 이름을 가진 다른 파일 IFF 파일 이름이 이미
이 완전히 당신이 파일을 어떻게 할 건데에 따라 달라집니다 얼마나 잘 볼 수 존재한다. 실제 사례를 가장 잘 보여줍니다. (부수적으로, 들어오는 데이터에 대해 mysql_real_escape_string()을 전역 적으로 사용해서는 안되며, 데이터를 데이터베이스에 삽입 할 때만 사용해야하며, 그 함수는 데이터베이스 삽입만으로 당신을 보호 할 것입니다. int)'항상 괜찮습니다.) –
어쨌든 PDO를 사용하면 mysql_real_escape_string()을 사용하는 것이 더 안전합니다. 물론 – Shoe
PRO는 괜찮습니다. 그러나 주인이 PDO를 갖고 있지 않다면 어떻게해야합니까? 예를 들어 AppServ를 사용하고 기본적으로 MySQL 용 PDO 확장을 가지고 있지 않습니다. MSSQL 또는 사용하지 않는 것에 대해서만 ... – sed