隐藏用户的网址路径

时间:2015-07-30 14:08:26

标签: php

出于安全考虑,我不希望我的用户可以阅读网址来访问图片。

其实我有

https://files.domain.com/TERFD/TES/photos/20150729-0961577ba8bc6c31e7339acf0c53969a170609038345c3a0602d646a48067c10-ANnKb.jpeg?uid=3&token=360d641dc692041cbea673a

但我更喜欢用户可以阅读图片的路径或令牌

所以,我写了以下函数:

public function encrypt($data) {

    $key = "df456gfd";
    $data = serialize($data);
    $td = mcrypt_module_open(MCRYPT_DES,"",MCRYPT_MODE_ECB,"");
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    mcrypt_generic_init($td,$key,$iv);
    $data = base64_encode(mcrypt_generic($td, '!'.$data));
    mcrypt_generic_deinit($td);
    return $data;

}

public function decrypt($data) {

    $key = "df456gfd";
    $td = mcrypt_module_open(MCRYPT_DES,"",MCRYPT_MODE_ECB,"");
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    mcrypt_generic_init($td,$key,$iv);
    $data = mdecrypt_generic($td, base64_decode($data));
    mcrypt_generic_deinit($td);

    if (substr($data,0,1) != '!')
        return false;

    $data = substr($data,1,strlen($data)-1);
    return unserialize($data);

}

我的网址现在是:

https://files.domain.com/NcGDHiMnmM3fYW2W03ulyJdlCp6FaXCYDlxzWe74zH63+YpfUSPuKnxWIG1C1WNNjw/jU7coduYchvf44Lh4yiVdcL7uyx4vA4oOj14keiohQ9geIYVxsa4n07E0TXbstSETbhqGejE03Ai5hGcJEa7U/aA7z1fRkQEAxepH9j6yu+tQZESp3dXg7JUvVffI9lbpPtbGLj8=

我可以从files.domain.com解密它并返回所请求的文件。

这是一个好习惯吗?

Thx

1 个答案:

答案 0 :(得分:0)

您实际上只是通过这种做法放慢了应用程序的速度。老实说,你让它太复杂了。为什么不使用base64_encode()base64_decode()之类的内容。这些函数实际上是faster而不是解密和加密函数。