PHPでユーザーの入力フォームから$_POSTされる値があります。このベストな検証を知りたいです。
PHP
1$input_url = input_url$_POST['input_url'];
初めに以下で「http://example.com」といったURLの検証を実装しました。
PHP
1$input_url = filter_input(INPUT_POST, 'input_url', FILTER_VALIDATE_URL) ?? '';
しかし、ssh:// まで通してしまうことを発見しました。
こういった場合はどうしたらいいのでしょうか?
もしかして、正規表現で以下がベストなのでしょうか?
PHP
1$input_url = filter_input(INPUT_POST, 'input_url', FILTER_VALIDATE_URL) && preg_match('|^https?://.*$|', $_POST['input_url']) ?? '';