加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何清理用户提交的网址?

发布时间:2020-12-13 13:25:26 所属栏目:PHP教程 来源:网络整理
导读:参见英文答案 Best way to handle security and avoid XSS with user entered URLs9个 我希望将用户的个人网址存储为纯文本,由htmlspecialchars()编码. 然后我将检索此数据并生成并显示一个链接,如下所示: echo 'a href="'.$retrieved_string.'" target="_b
参见英文答案 > Best way to handle security and avoid XSS with user entered URLs9个
我希望将用户的个人网址存储为纯文本,由htmlspecialchars()编码.

然后我将检索此数据并生成并显示一个链接,如下所示:

echo '<a href="'.$retrieved_string.'" target="_blank">';

然而,即使使用编码的特殊字符和引号,由于可能插入的javascript,错误链接的示例,href可能不安全:

javascript:alert(document.cookie);

所以我想的是剥离潜在的’javascript’标签(当然我在进行特殊字符编码之前),如下所示:

preg_replace('/^javascript:?/','',$submitted_and_trimmed_input);

所以让我们完全总结一下:

$input=htmlspecialchars(preg_replace('/^javascript:?/',trim($_POST['link'])),11,'UTF-8',true);
mysql_query("update users set link='".mysql_real_escape_string($input)."'");

//And retrieving:

$query=mysql_query("select link from users");
$a=mysql_fetch_assoc($query);
echo '<a href="'.$a['link'].'" target="_blank">';

现在问题是,网址链接是否足够安全,或者是否还有其他潜在的意外我应该警惕?

编辑:

我已经阅读了一些关于filter_var()的内容,它似乎在很多方面完全失败了.它不会使用unicode字符验证国际域,然后以下字符串再次成功通过测试:

http://example.com/"><script>alert(document.cookie)</script>

>我的意思是共同的…那只是一种荒谬的,必须有更好的方法

尝试使用 filter_var()
filter_var('http://example.com',FILTER_VALIDATE_URL,FILTER_FLAG_PATH_REQUIRED)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读