From 7c4de150500bdd545e1f79f81bc0165285d52d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A0=E3=81=84=E3=81=A1=E3=81=BE=E3=82=8B?= <98202777+Daichimarukana@users.noreply.github.com> Date: Wed, 20 Aug 2025 01:30:46 +0900 Subject: [PATCH] uwuzu v1.6.4 Hapuego --- function/function.php | 49 ++++++++++++++++++++++++++++++----------- server/banuserid.txt | 2 +- server/uwuzuinfo.txt | 4 ++-- server/uwuzurelease.txt | 10 +++++++++ update.json | 18 +++------------ 5 files changed, 52 insertions(+), 31 deletions(-) diff --git a/function/function.php b/function/function.php index 2c03290..7e07bdd 100644 --- a/function/function.php +++ b/function/function.php @@ -410,11 +410,8 @@ function check_mime($tmp_name){ "image/gif", "image/jpeg", "image/png", - "image/svg+xml", "image/webp", "image/bmp", - "image/x-icon", - "image/tiff" ); if(in_array($tmp_ext,$safe_img_mime)){ return $tmp_ext; @@ -443,11 +440,8 @@ function convert_mime($mime_type){ "image/gif" => 'gif', "image/jpeg" => 'jpg', "image/png" => 'png', - "image/svg+xml" => 'svg', "image/webp" => 'webp', "image/bmp" => 'bmp', - "image/x-icon" => 'ico', - "image/tiff" => 'tiff', "video/mpeg" => 'mpeg', "video/mp4" => 'mp4', "video/webm" => 'webm', @@ -469,11 +463,8 @@ function base64_mime($Base64,$userid){ "image/gif" => 'gif', "image/jpeg" => 'jpg', "image/png" => 'png', - "image/svg+xml" => 'svg', "image/webp" => 'webp', "image/bmp" => 'bmp', - "image/x-icon" => 'ico', - "image/tiff" => 'tiff' ]; if(isset($safe_img_mime[$mime_type])){ @@ -482,6 +473,11 @@ function base64_mime($Base64,$userid){ file_put_contents($temp_file, $Base64); delete_exif($extension, $temp_file); + resizeImage($temp_file, 8192, 8192); + + if(check_mime($temp_file) == "image/webp"){ + $extension = 'webp'; + } $newFilename = createUniqId() . '-' . $userid . '.' . $extension; $uploadedPath = '../ueuseimages/' . $newFilename; @@ -514,11 +510,8 @@ function base64_to_files($Base64, $userid) { "image/gif" => 'gif', "image/jpeg" => 'jpg', "image/png" => 'png', - "image/svg+xml" => 'svg', "image/webp" => 'webp', "image/bmp" => 'bmp', - "image/x-icon" => 'ico', - "image/tiff" => 'tiff' ]; if (!(isset($safe_img_mime[$mime_type]))) { @@ -533,6 +526,11 @@ function base64_to_files($Base64, $userid) { // 必要に応じてEXIFデータを削除 delete_exif($extension, $temp_file); + resizeImage($temp_file, 8192, 8192); + + if(check_mime($temp_file) == "image/webp"){ + $extension = 'webp'; + } // ファイル名とアップロードパスを生成 $newFilename = createUniqId() . '-' . $userid . '.' . $extension; @@ -561,12 +559,18 @@ function resizeImage($filePath, $maxWidth, $maxHeight) { } elseif($imageType == "image/bmp") { $originalImage = imagecreatefrombmp($filePath); } else { - return; + return true; } // 元の画像のサイズを取得 list($originalWidth, $originalHeight) = getimagesize($filePath); + if ($originalWidth <= $maxWidth && $originalHeight <= $maxHeight) { + imagewebp($originalImage, $filePath, 90); + imagedestroy($originalImage); + return true; + } + // 縦横比を計算 $aspectRatio = $originalWidth / $originalHeight; @@ -588,6 +592,8 @@ function resizeImage($filePath, $maxWidth, $maxHeight) { // メモリの解放 imagedestroy($originalImage); imagedestroy($resizedImage); + + return true; } } @@ -1425,12 +1431,17 @@ function send_ueuse($userid,$rpUniqid,$ruUniqid,$ueuse,$photo1,$photo2,$photo3,$ // アップロードされたファイルの拡張子を取得 $extension = convert_mime(check_mime($uploadedFile['tmp_name'])); delete_exif($extension, $uploadedFile['tmp_name']); + resizeImage($uploadedFile['tmp_name'], 8192, 8192); + if($aibwm === true){ AIBlockWaterMark($uploadedFile['tmp_name'], $userid); } if(AMS3_CHKS == "true"){ $s3result = uploadAmazonS3($uploadedFile['tmp_name']); }else{ + if(check_mime($uploadedFile['tmp_name']) == "image/webp"){ + $extension = 'webp'; + } // 新しいファイル名を生成(uniqid + 拡張子) $newFilename = createUniqId() . '-'.$userid.'.' . $extension; // 保存先のパスを生成 @@ -1481,12 +1492,16 @@ function send_ueuse($userid,$rpUniqid,$ruUniqid,$ueuse,$photo1,$photo2,$photo3,$ // アップロードされたファイルの拡張子を取得 $extension2 = convert_mime(check_mime($uploadedFile2['tmp_name'])); delete_exif($extension2, $uploadedFile2['tmp_name']); + resizeImage($uploadedFile2['tmp_name'], 8192, 8192); if($aibwm === true){ AIBlockWaterMark($uploadedFile2['tmp_name'], $userid); } if(AMS3_CHKS == "true"){ $s3result = uploadAmazonS3($uploadedFile2['tmp_name']); }else{ + if(check_mime($uploadedFile2['tmp_name']) == "image/webp"){ + $extension2 = 'webp'; + } // 新しいファイル名を生成(uniqid + 拡張子) $newFilename2 = createUniqId() . '-'.$userid.'.' . $extension2; // 保存先のパスを生成 @@ -1536,12 +1551,16 @@ function send_ueuse($userid,$rpUniqid,$ruUniqid,$ueuse,$photo1,$photo2,$photo3,$ // アップロードされたファイルの拡張子を取得 $extension3 = convert_mime(check_mime($uploadedFile3['tmp_name'])); delete_exif($extension3, $uploadedFile3['tmp_name']); + resizeImage($uploadedFile3['tmp_name'], 8192, 8192); if($aibwm === true){ AIBlockWaterMark($uploadedFile3['tmp_name'], $userid); } if(AMS3_CHKS == "true"){ $s3result = uploadAmazonS3($uploadedFile3['tmp_name']); }else{ + if(check_mime($uploadedFile3['tmp_name']) == "image/webp"){ + $extension3 = 'webp'; + } // 新しいファイル名を生成(uniqid + 拡張子) $newFilename3 = createUniqId() . '-'.$userid.'.' . $extension3; // 保存先のパスを生成 @@ -1590,12 +1609,16 @@ function send_ueuse($userid,$rpUniqid,$ruUniqid,$ueuse,$photo1,$photo2,$photo3,$ // アップロードされたファイルの拡張子を取得 $extension4 = convert_mime(check_mime($uploadedFile4['tmp_name'])); delete_exif($extension4, $uploadedFile4['tmp_name']); + resizeImage($uploadedFile4['tmp_name'], 8192, 8192); if($aibwm === true){ AIBlockWaterMark($uploadedFile4['tmp_name'], $userid); } if(AMS3_CHKS == "true"){ $s3result = uploadAmazonS3($uploadedFile4['tmp_name']); }else{ + if(check_mime($uploadedFile4['tmp_name']) == "image/webp"){ + $extension4 = 'webp'; + } // 新しいファイル名を生成(uniqid + 拡張子) $newFilename4 = createUniqId() . '-'.$userid.'.' . $extension4; // 保存先のパスを生成 diff --git a/server/banuserid.txt b/server/banuserid.txt index 0e681f2..48b3dd7 100644 --- a/server/banuserid.txt +++ b/server/banuserid.txt @@ -43,7 +43,7 @@ accounts help helps info -infomation +information notice notification tech \ No newline at end of file diff --git a/server/uwuzuinfo.txt b/server/uwuzuinfo.txt index 708cb8b..40c3403 100644 --- a/server/uwuzuinfo.txt +++ b/server/uwuzuinfo.txt @@ -1,4 +1,4 @@ uwuzu -1.6.3 -2025/08/10 +1.6.4 +2025/08/20 daichimarukana,putonfps \ No newline at end of file diff --git a/server/uwuzurelease.txt b/server/uwuzurelease.txt index 812aac7..67d568b 100644 --- a/server/uwuzurelease.txt +++ b/server/uwuzurelease.txt @@ -1,6 +1,15 @@ ## リリースノートだぜぇぇぇぇぇぇい!!!!!!! ここにはuwuzuの更新情報を載せてくぜぇ~!(いやまてテンションおかしいだろ...) +## Version 1.6.4 +2025/08/20 +fix: 画像のアップロード時に発生するおそれのある脆弱性を修正しました! +fix: 前回のアップデートで配信予定だったbanuserid.txtの修正配信忘れの修正を行いました! +chg: ユーズに添付される画像の最大サイズを8192x8192pxにしました!(超過するものはリサイズされます) +chg: gif画像を除くユーズ添付画像ファイルはすべてwebp形式に変換されるようになりました! +del: svg・tiff・ico形式の画像の対応機能を削除しました! +Special thanks: @modurili デバッグ用画像をご提供いただきました。 + ## Version 1.6.3 2025/08/10 fix: 「0」のみのユーズが行えない問題を修正しました! @@ -12,6 +21,7 @@ new: 通知APIにvalueidという値を追加しました! valueidでは、ユーズのメンションや返信では、メンション・返信してきたユーズのID、フォローなどではフォローしてきたユーザーのIDなどが入ります。 すべての通知にvalueidの値が含まれるわけではありませんので、ご注意ください。 これにより、uwuzuのDB内のnotificationテーブルの構造に「valueid」(varchar(256))を追加する必要があります。 +uwuzu_database.sqlは更新済みです。 ## Version 1.6.2 (Hapuego) 2025/08/08 diff --git a/update.json b/update.json index 726af08..660f512 100644 --- a/update.json +++ b/update.json @@ -1,24 +1,12 @@ { "software": "uwuzu", - "version": "1.6.3", - "release_date": "2025/08/10", - "release_notes": "このアップデートでは、「0」のみのユーズが行えない問題の修正や、タイムラインの大幅高速化などの改善が含まれています!\nアップデートの前にDBの構造の更新が必要です。リリースノートに従って更新をしてください!\n詳細はリリースノートをご確認ください。", + "version": "1.6.4", + "release_date": "2025/08/20", + "release_notes": "このアップデートでは、ユーズの添付画像に関する重大な脆弱性の修正が含まれます。\n早急なアップデートを強く推奨します!!!!!\n詳細はリリースノートをご確認ください。", "notices": "アップデート前にデータのバックアップを行うことをおすすめします!", "files": { "overwrite": [ - "/api/me/notification/index.php", "/function/function.php", - "/nextpage/bookmarktimeline.php", - "/nextpage/followtimeline.php", - "/nextpage/foryoutimeline.php", - "/nextpage/localtimeline.php", - "/nextpage/searchtimeline.php", - "/nextpage/ueusetimeline.php", - "/nextpage/userliketimeline.php", - "/nextpage/usermediatimeline.php", - "/nextpage/usertimeline.php", - "/settings/index.php", - "/login.php", "/server/uwuzuabout.txt", "/server/uwuzuinfo.txt", "/server/uwuzurelease.txt"