zoukankan      html  css  js  c++  java
  • 分享如何使用PHP将URL地址参数进行加密传输提高网站安全性

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

    1
    www.mdaima.com/get.php?VGsAYQ96VzkEaF08DTxTLQIyDmsBIQtnVj0Fe1ciAD0EN1M0X2MHMQYxDDcAOwI/XToBPVM5ADxfag==

    我们再加强一下,将get.php重命名改为get_mb.php,然后利用静态规则,把get.html映射到get_mb.php,这样即使用户试着访问get.php也无法找到真实的PHP文件了,因为真实的PHP文件不是get.php而是get_mb.php,以下是.htaccess规则设置?

    1
    RewriteRule ^get.html$ get_mb.php?&%{QUERY_STRING}   #.htaccess伪静态规则的设置(加入到.htaccess里就行)

    利用加密再配合伪静态设置,最终效果就是下面这样了,即隐藏了真实php文件get_mb.php又将参数都加密传输了。

    1
    www.mdaima.com/get.html?VGsAYQ96VzkEaF08DTxTLQIyDmsBIQtnVj0Fe1ciAD0EN1M0X2MHMQYxDDcAOwI/XToBPVM5ADxfag==

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    //---------------以下为加密函数(复制过去就行了)-----------------
    function keyED($txt,$encrypt_key){       
        $encrypt_key    md5($encrypt_key);
        $ctr=0;       
        $tmp ""      
        for($i=0;$i<</code>strlen($txt);$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<</code>strlen($txt);$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<</code>strlen($txt);$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进行加密并加入时间戳一起,这样每次的链接地址都是动态的,而且可以在接收页面设置页面限制超时的有效期了。

    1
    "form1" name="form1" method="post" action="?

    0

    阅读 评论 收藏 转载 喜欢 打印举报
    已投稿到:
    • 评论加载中,请稍候...
    发评论

      发评论

      以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

        

      新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

      新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

      新浪公司 版权所有

    • 相关阅读:
      vs2013+opencv2410的一些问题
      windows下bat批量处理启动exe
      https://blog.csdn.net/u012235003/article/details/54576737
      error LNK2005:"private:__thiscall编译错误
      后缀自动机学习笔记
      后缀数组学习笔记
      AC自动机学习笔记
      KMP
      Manacher学习笔记
      字符串Hash/树Hash学习笔记
    • 原文地址:https://www.cnblogs.com/lxwphp/p/7730831.html
    Copyright © 2011-2022 走看看