对用户隐藏url路径


Hide url path from user

出于安全考虑,我不希望我的用户可以读取url来访问例如图片。

实际上我有

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);
}

我的URL现在是:

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

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

这是一个好的做法吗?

Thx

这样做实际上只是降低了应用程序的速度。老实说,你把它弄得太复杂了。为什么不用base64_encode()base64_decode()呢?这些功能实际上是faster比你的解密和加密功能。