php如何给url加密_如何使用PHP将URL地址参数进行加密传输提高网站安全性

这篇文章介绍的内容是关于如何使用PHP将URL地址参数进行加密传输提高网站安全性,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

大家在使用PHP进行GET或POST提交数据时,经常会在URL带着参数进行传递,比如www.mdaima.com/get.php?id=1&page=5,这里就将id编号和page页码进行了参数传递,如果这样直接明文传输,会将参数直接暴露给用户,要是是比较重要的数据这样传输我觉得还是不太安全。那如果将参数变成下面这样,是不是会好点呢?www.mdaima.com/get.php?VGsAYQ96VzkEaF08DTxTLQIyDmsBIQtnVj0Fe1ciAD0EN1M0X2MHMQYxDDcAOwI%2FXToBPVM5ADxfag%3D%3D

我们再加强一下,将get.php重命名改为get_mb.php,然后利用静态规则,把get.html映射到get_mb.php,这样即使用户试着访问get.php也无法找到真实的PHP文件了,因为真实的PHP文件不是get.php而是get_mb.php,以下是.htaccess规则设置?RewriteRule ^get.html$ get_mb.php?&%{QUERY_STRING} #.htaccess伪静态规则的设置(加入到.htaccess里就行)

利用加密再配合伪静态设置,最终效果就是下面这样了,即隐藏了真实php文件get_mb.php又将参数都加密传输了。www.mdaima.com/get.html?VGsAYQ96VzkEaF08DTxTLQIyDmsBIQtnVj0Fe1ciAD0EN1M0X2MHMQYxDDcAOwI%2FXToBPVM5ADxfag%3D%3D

相比之下已经好一些了吧,至少看上去会好很多,那如何进行加密和解密呢?请看下面函数(不用细看,直接拿过去用就行了,重点看如果调用)//---------------以下为加密函数(复制过去就行了)-----------------

function keyED($txt,$encrypt_key){

$encrypt_key = md5($encrypt_key);

$ctr=0;

$tmp = "";

for($i=0;$i

{

if ($ctr==strlen($encrypt_key))

$ctr=0;

$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);

$ctr++;

}

return $tmp;

}

function encrypt($txt,$key) {

$encrypt_key = md5(mt_rand(0,100));

$ctr=0;

$tmp = "";

for ($i=0;$i

{

if ($ctr==strlen($encrypt_key))

$ctr=0;

$tmp.=substr($encrypt_key,$ctr,1) . (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));

$ctr++;

}

return keyED($tmp,$key);

}

function decrypt($txt,$key){

$txt = keyED($txt,$key);

$tmp = "";

for($i=0;$i

{

$md5 = substr($txt,$i,1);

$i++;

$tmp.= (substr($txt,$i,1) ^ $md5);

}

return $tmp;

}

function encrypt_url($url,$key){

return rawurlencode(base64_encode(encrypt($url,$key)));

}

function decrypt_url($url,$key){

return decrypt(base64_decode(rawurldecode($url)),$key);

}

function geturl($str,$key){

$str = decrypt_url($str,$key);

$url_array = explode('&',$str);

if (is_array($url_array))

{

foreach ($url_array as $var)

{

$var_array = explode("=",$var);

$vars[$var_array[0]]=$var_array[1];

}

}

return $vars;

}

$key_url_md_5 = 'mdaima.com-123-scc'; //可以更换为其它的加密标记,可以自由发挥

//---------------以上为加密函数-结束(复制过去就行了)-----------------

以上这个是关键的加密与解密函数,下面看一下如何调用,我们举例说一下将表单action中参数id和page进行加密并加入时间戳一起,这样每次的链接地址都是动态的,而且可以在接收页面设置页面限制超时的有效期了。

" enctype="multipart/form-data">

上面就是如何加密参数。再看一下如何解密接收到的参数:$url_info = geturl($_SERVER[QUERY_STRING],$key_url_md_5);//接收所有参数

$page=$url_info['page'];//解密对应参数

$id=$url_info['id'];

$time=$url_info['time'];//这个是时间戳,大家可以利用这个参数判断一下链接生成的时间,就可以判断是否超时了(此项如果不需要也可以忽略)

这样我们就得到了解密的$page和$id参数了,大家试一下吧,有问题也可以联系我!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值