如何使用PHP使href属性的字符串安全?

如何使用PHP使href属性的字符串安全?,php,sanitization,Php,Sanitization,编码引号和删除最终的javascript:前缀就足够了吗 p.S.足够安全,可以抵御XSS攻击。您可以使用php函数验证URL $url = "http://google.com"; if (filter_var($url, FILTER_VALIDATE_URL)) { echo "URL is valid"; } else { echo "URL is invalid"; } 使用entu QUOTES标记进行编码,从技术上讲,从HTML角度来看,可以使URL安全/卫生地使用,但不

编码引号和删除最终的
javascript:
前缀就足够了吗


p.S.足够安全,可以抵御XSS攻击。

您可以使用php函数验证URL

$url = "http://google.com";
if (filter_var($url, FILTER_VALIDATE_URL)) {
  echo "URL is valid";
}
else {
  echo "URL is invalid";
}
使用
entu QUOTES
标记进行编码,从技术上讲,从HTML角度来看,可以使URL安全/卫生地使用,但不能保证它会创建有效的地址

$url = 'http://invalid"url';
$url = htmlspecialchars($url, ENT_QUOTES); // Yields "http://invalid"url"

我对验证不感兴趣。我对使字符串安全(消毒)很感兴趣,不管它是否是有效的URL。你的问题太不具体了,无法弄清楚标题中的“安全”一词代表什么。您可能想过滤协议URL,但是您应该要求这样做。上下文没有问题,但请将问题保留到您想了解的部分。@hakre,足够安全,可以击败XSS攻击。好吧,那么我想澄清一下,删除逐字
javascript:
不足以阻止href属性中的XSS。相反,我强烈建议你在这里做一些白名单(这更容易实现,而且你不需要成为一个超级专业人士来确保安全)@hakre,你介意在回答中详细说明一下吗?如果你稍微了解我指的方向,为什么不自己制定答案,然后ping我,我看一看?使用
htmlspecialchars()
可以使URI在HTML属性中使用时安全。它保证了有效的HTML,但在安全性方面没有任何帮助(=OP希望保护用户不被呈现恶意JavaScript链接)。