WordPress bietet eine hilfreiche Funktion, is_email()
die überprüft, ob eine bestimmte E-Mail-Adresse gültig ist. Gibt es eine ähnliche Funktion, um zu überprüfen, ob eine URL gültig ist?
Ich habe es versucht, is_url()
aber das war nur Wunschdenken meinerseits.
php
validation
Henrywright
quelle
quelle
$pdo->query("SELECT pw FROM users WHERE id={$_GET['id']}")
.FILTER_VALIDATE_URL
dies nicht der Fall ist.ttps://www.youtube.com
als gültig. Mit anderen Worten - verwenden Sie nicht FILTER_VALIDATE_URL - es ist unzuverlässig.Ich weiß, dass dies ein alter Beitrag ist, aber für jeden Besucher lohnt es sich auch, die WP-Funktionen zu berücksichtigen,
esc_url()
undesc_url_raw()
letztere sind sicher für Datenbankeinträge usw., da sie keine Entitäten codieren.esc_url()
codiert Entitäten und ist daher gut für die Anzeige für Benutzer.In der Quelle können Sie sehen, dass
esc_url()
nach einer Whitelist zulässiger Protokolle und StrukturenFILTER_VALIDATE_URL
gesucht wird, wodurch einige der Schwachstellen vermieden werden , die durch den von @tobltobs bereitgestellten Link festgestellt werden.quelle
Ich fand es
wp_http_validate_url
sehr praktisch, während der Arbeit an meinem Projekt zu überprüfen, ob eine Zeichenfolge eine gültige URL enthält oder nicht.Nehmen Sie hier eine Referenz: https://developer.wordpress.org/reference/functions/wp_http_validate_url/
Zum Beispiel:
Es gibt die URL selbst zurück, wenn sie gültig ist, andernfalls false.
quelle
localhost
als ungültig eingestuft. aber es hat sichhttp://example.com/"><script>alert("xss")</script>
als gültig erwiesen.http://localhost
ungültig.http_request_host_is_external
Filter verwenden, um localhost zu erlauben:function allow_some_url( $external, $host, $url ) { return ( $host === 'localhost' ) ? true : $external; } add_filter( 'http_request_host_is_external', 'allow_some_url', 10, 3 ); if ( wp_http_validate_url( 'http://localhost/wordpress/' ) ) { echo 'valid'; } else { echo 'invalid'; }
gethostbyname()
die IP-Adresse der URL abgerufen wird, um weitere Aussagen zu treffen.Ich schlage vor , um sicherzustellen, dass die vom Benutzer übermittelte URL gültig und sicher ist , um sie zu speichern und später anzuzeigen
esc_url_raw()
, wie oben erwähnt, bereinigt @orionrush die URL, indem alles Ungültige oder Böswillige daraus entfernt wird. Wenn die Zeichenfolge nichts Ungültiges oder Bösartiges enthält, ist dies in Ordnung.Z.B
Ich habe hier einen längeren Blog-Beitrag dazu geschrieben: https://cmljnelson.wordpress.com/2018/08/31/url-validation-in-wordpress/
quelle
Meiner Meinung nach ist es besser, wp_http_validate_url zu verwenden .
Beispiel 1:
Falsch zurückgeben.
Beispiel 2:
URL zurückgeben.
Ref: https://developer.wordpress.org/reference/functions/wp_http_validate_url/
Ref: https://www.php.net/manual/en/function.filter-var.php
quelle
is_email()
Überprüfen Sie tatsächlich nicht, ob eine E-Mail-Adresse gültig ist, sondern nur, wenn sie den Spezifikationen entspricht. Die E-Mail, die ich gerne für viele Websites zur Verfügung stelle, die sinnloses Interesse an meiner E-Mail-Adresse zeigen, lautet [email protected]. Dies entspricht der Adresse, aber es ist unwahrscheinlich, dass jemand sie verwendet.Das Auschecken von URLs erfolgt am besten durch Pingen. Sie können versuchen, die Konformität zu überprüfen, aber theoretisch gibt es kaum Einschränkungen, was eine codierte URL sein kann.
quelle