gpt4 book ai didi

php - 如何在 PHP 中正确清理 URL 作为链接?

转载 作者:行者123 更新时间:2023-12-04 04:58:21 24 4
gpt4 key购买 nike

我有一个网站,用户可以在其中共享指向其主页的链接,例如 http://example.com/user .目前,我正在使用 PHP 函数 filter_var($_POST['url'], FILTER_VALIDATE_URL)在使用准备好的语句将其添加到数据库之前验证 URL。

但是,我意识到 PHP 过滤器函数接受诸如 http://example.com/<script>alert('XSS');</script> 之类的输入。可用于跨站点脚本。为了解决这个问题,我使用 htmlspecialchars<a> 中的 URL 上标签和 rawurlencodehref标签的属性。

但是rawurlencode导致 /在要转换为 %2f 的 URL 中,这使得 URL 无法识别。我正在考虑做一个 preg_replace所有 %2f返回 / .这是清理 URL 以显示为链接的方法吗?

最佳答案

这现在已经过时了:

I am using the PHP function filter_var($_POST['url'], FILTER_VALIDATE_URL) to validate the URL before adding it to database using prepared statement.



而不是 FILTER_VALIDATE_URL

您可以使用以下技巧:
$url = "your URL"
$validation = "/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";
if((bool)preg_match($validation, $url) === false)
echo 'Not a valid URL';

我认为它可能对你有用。一切顺利:)

关于php - 如何在 PHP 中正确清理 URL 作为链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16461906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com