首页 > 资讯列表 > 编程/数据库 >> PHP

在PHP中实现Javascript的escape()函数代码

PHP 2014-12-04 08:25:38 转载来源: 网络整理/侵权必删

本文是一个php实现的javascript中的escape函数的代码,感兴趣的同学参考下。 在 Javascript 中,可以利用 escape/unescape() 和 eval_r() 函数进行简单的转码处理,让普通的 URL 网址看起来比较怪异,使那些令人讨厌的搜索爬虫无法辨认你希望隐藏的资源

本文是一个php实现的javascript中的escape函数代码,感兴趣的同学参考下。

Javascript 中,可以利用 escape/unescape() 和 eval_r() 函数进行简单的转码处理,让普通的 URL 网址看起来比较怪异,使那些令人讨厌的搜索爬虫无法辨认你希望隐藏的资源。
这里,一般都需要预先将正常的字符串编码成 JavaScript unescape() 函数能够解译的格式,以 PHP 为例,可以使用以下函数实现 Javascript 中 escape() 函数相同的功能:


<?php
function escapeToHex($string, $encoding = UTF-8) {
$return = ;
for ($x = 0; $x < mb_strlen($string, $encoding); $x ++) {
$str = mb_substr($string, $x, 1, $encoding);
if (strlen($str) > 1) { // 多字节字符
$return .= %u . strtoupper(bin2hex(mb_convert_encoding($str, UCS-2, $encoding)));
} else {
$return .= % . strtoupper(bin2hex($str));
}
}
return $return;
}
?>


假设我们要隐藏以下地址:http://www.sss.sh/assets/uploaded/thisistest.pdf
我们可以利用以下脚本实现:


<?php
// 请自行包含 escapeToHex() 函数定义
$test = document.write(<a href="http://www.sss.sh/assets/uploaded/thisistest.pdf">test</a>);
echo <script Language="Javascript">eval_r(unescape(" . escapeToHex($test) . "))</script>;
?>


如果你查看页面源代码,你会看到(因为太长,所以进行了手动分行,实际运行结果应该是完整的一行):

 


<script Language="Javascript">eval_r(unescape("%64%6F%63%75%6D%65%6E%74%2E%77
%72%69%74%65%28%27%3C%61%20%68%72%65%66%3D%22%68%74%74%70%3A%2F%2F%77%77%77
%2E%64%69%72%6B%79%65%2E%6E%65%74%2F%75%70%6C%6F%61%64%65%64%2F%74%68%69%73
%69%73%74%65%73%74%2E%70%64%66%22%3E%74%65%73%74%3C%2F%61%3E%27%29"))</script>


而在浏览器中显示的页面,和普通 html 没有分别。
注:
1、escapeToHex() 函数的第二个参数($encoding)表示你传递进来的字符串的编码,默认是 UTF-8,如果你使用了其他编码,应该在调用函数的明确指定;
2、unescape() 在 ECMAScript v3 规范中被反对使用,该规范建议使用新的替代函数 decodeURIComponent(),但我经过测试发现,decodeURIComponent()函数对多字节字符(中文)处理存在问题,所以仍然使用了 unescape() 函数。
3、原则上来说,上述方法只是为了防止搜索爬虫获取你认为需要保密的资源地址,在支持 Javascript 的浏览器下浏览页面,和没有启用这种保护机制情况下看到的呈现是完全相同的。

 


标签: PHP 实现 Javascript escape 函数 代码


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持