From 5f27e0a9a8e89a2668fbedd808741b7b36c255ae Mon Sep 17 00:00:00 2001 From: Ryuichi Date: Thu, 30 Jan 2025 16:05:17 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=86=E3=83=BC=E3=83=9E=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=81=AE=E3=80=8C=E3=83=AA=E3=83=B3=E3=82=AF=E5=85=88URL?= =?UTF-8?q?=E3=80=8D=E6=AC=84=E3=81=AE=E3=83=AB=E3=83=BC=E3=83=88=E3=83=91?= =?UTF-8?q?=E3=82=B9=E3=82=84null=E3=81=8C=E3=82=A8=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=81=AB=E3=81=AA=E3=82=8B=E3=80=82=E3=80=80=E3=80=80=E3=83=AC?= =?UTF-8?q?=E3=83=93=E3=83=A5=E3=83=BC=E4=BF=AE=E6=AD=A3=20=E5=85=A5?= =?UTF-8?q?=E5=8A=9B=E5=80=A4=E3=81=AE=E6=96=87=E5=AD=97=E5=88=97=E5=9E=8B?= =?UTF-8?q?=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF=E3=80=81=E7=A9=BA=E6=96=87?= =?UTF-8?q?=E5=AD=97=E3=81=AE=E8=A8=B1=E5=AE=B9=E3=80=81path=E3=81=AE?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E7=A2=BA=E8=AA=8D&=E6=AD=A3=E8=A6=8F?= =?UTF-8?q?=E8=A1=A8=E7=8F=BE=E3=80=80=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Model/Validation/BcValidation.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/plugins/baser-core/src/Model/Validation/BcValidation.php b/plugins/baser-core/src/Model/Validation/BcValidation.php index a271434a6a..c4910923dd 100644 --- a/plugins/baser-core/src/Model/Validation/BcValidation.php +++ b/plugins/baser-core/src/Model/Validation/BcValidation.php @@ -679,7 +679,23 @@ public static function checkWithJson($string, $key, $regex) */ public static function urlCheck($value):bool { - return preg_match('/^($|\/|\/[a-zA-Z0-9\-]+(\/[a-zA-Z0-9\-]*)*|[a-zA-Z0-9\-\.]+:\/\/[a-zA-Z0-9\-\.]+(\/[a-zA-Z0-9\-\.\/?&=]*)*)$/', $value); + + // 文字列チェック + if(!is_string($value)) { + return false; + } + + // 空文字は許容 + if ($value === '') { + return true; + } + + // `parse_url` でパス部分を取得 + $parsedUrl = parse_url($value); + + + // `path` の存在を確認し、スラッシュから始まっているかをチェック + return isset($parsedUrl['path']) && preg_match('/^\/[a-zA-Z0-9\-_\/]*$/', $parsedUrl['path']); } }