我有一个网站,用户可以在其中共享指向其主页的链接,例如http://example.com/user. 目前,我正在使用 PHP 函数filter_var($_POST['url'], FILTER_VALIDATE_URL)在使用准备好的语句将其添加到数据库之前验证 URL。
但是,我意识到 PHP 过滤器函数接受输入,例如http://example.com/<script>alert('XSS');</script>可用于跨站点脚本的输入。为了解决这个问题,我在标签htmlspecialchars内的 URL<a>和标签rawurlencode的href属性上使用。
但是rawurlencode会导致/URL 中的 被转换为%2f,从而使 URL 无法识别。我正在考虑做一个preg_replacefor all %2fback to /。这是清理 URL 以显示为链接的方法吗?