1

我想以某种方式掩盖其内容,$url = "http://blah.somedomain.com/contents/somefolder/somefile.htm";以便我可以将它们用于链接,但这样在查看页面源时,人类不容易阅读这些 URL。当点击它时,混淆的 URL 仍然需要在浏览器中工作,所以我看过的其他混淆方法并不好。

我们追求的是例如$obscureurl = "%3A%2F%2F"...等

有任何想法吗?谢谢。


编辑:到目前为止,感谢您的建议,但为了澄清,我应该说我不是在编码成 HTML 实体(# 值)之后,而是在百分比编码(ASCII 中的十六进制值)之后。

例如,更改hello@me.com为:%68%65%6c%6c%6f%40%6d%65%2e%63%6f%6d

每个字母和符号的十六进制的 ASCII 表在这里:http: //ascii.cl/

用 PHP 可以实现这种完全转换吗?谢谢

4

2 回答 2

1

我可以看到两种简单的方法来实现这一点:

于 2015-03-07T05:41:23.223 回答
1
$url = '..';
$encoded = join(array_map(function ($byte) { return "%$byte"; }, str_split(bin2hex($url), 2)));

这基本上就是整个编码机制。bin2hex获取十六进制 ( )中的原始字节,2每个字节的字符,并在前面加上%.

并不是说这真的会对混淆有很大的帮助。浏览器实际上甚至可能不会以编码形式显示它,甚至搜索引擎也可能只显示解码形式。此外,您仍在生成规范 URL。该 URL 究竟包含什么并不重要。如果人们有指向它的链接,那么他们就有指向它的链接,无论该链接的可读性如何。

于 2015-03-16T07:29:14.883 回答