Debian サーバー上の何千もの元の画像ファイルがサムネイル画像ファイルに置き換えられていることがわかりました。そして、私は自分でこの操作を行っていないと確信しています。したがって、ハッカーが私のサーバーに侵入し、損害を与えたに違いありません。しかし、ファイルが置き換えられている間の最後のログイン履歴を確認すると、疑わしいログインはありません。そのため、PHP コードに安全な問題がある可能性があると思います。以下は私のPHP画像アップロードコードです:
function upload() {
$sql = "SELECT photocount FROM user WHERE id={$_SESSION['id']}";
try {
$db = getConnection();
$stmt = $db->query($sql);
$user = $stmt->fetch(PDO::FETCH_OBJ);
if($user->photocount<9){
$filename = explode(".",$_FILES['upload_file']['name']);
$ext = end($filename);
$ctime = time();
$filename = $ctime.$_SESSION['id'].".".$ext;
header('content-type:text/html charset:utf-8');
if(!file_exists($_FILES['upload_file']['name'])) move_uploaded_file($_FILES['upload_file']['tmp_name'],"uploads/" .$filename);
$resizeimage = new resizeimage("uploads/".$filename, "160", "160", "1","uploads/small/".$filename);
$sql = "INSERT INTO photo (uid,thumbnail,original) VALUES('{$_SESSION['id']}','http://chongai.co/m/uploads/small/{$filename}', 'http://chongai.co/m/uploads/{$filename}')";
$sqll = "UPDATE user SET photocount=photocount+1 WHERE id={$_SESSION['id']}";
try {
$stmt = $db->query($sql);
$stmt = $db->query($sqll);
$sql = "SELECT id FROM photo WHERE thumbnail='http://chongai.co/m/uploads/small/{$filename}'";
$stmt = $db->query($sql);
$img = $stmt->fetch(PDO::FETCH_OBJ);
$db = null;
echo '{"status": ' . json_encode("Upload Success") . ',"file": ' . json_encode("http://chongai.co/m/uploads/small/{$filename}") . ',"id": ' . json_encode($img->id) . '}';
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}else{
echo '{"status": ' . json_encode("You can only upload 8 photos") . '}';
}
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
ところで: 私の Web サーバーは nginx でした。
どんな助けでも素晴らしいでしょう!これ!