【问题标题】:Percent-encoding entire PHP string into numbered ASCII values for obfuscation将整个 PHP 字符串百分比编码为编号的 ASCII 值以进行混淆
【发布时间】:2015-05-08 19:15:02
【问题描述】:

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

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

有什么想法吗?谢谢。


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

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

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

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

【问题讨论】:

标签: php html url obfuscation percent-encoding


【解决方案1】:
$url = '..';
$encoded = join(array_map(function ($byte) { return "%$byte"; }, str_split(bin2hex($url), 2)));

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

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

【讨论】:

  • 如何修改它以返回字符串而不是数组?谢谢
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    相关资源
    最近更新 更多