如何使用php

时间:2015-04-26 15:04:39

标签: php jquery html post encryption

我读了一些帖子,介绍了如何使用PHP在后HTML上加密数据。但我无法弄清楚它是如何完成的。

我解释了我的简单例子。

我有一个仪表板,用户可以看到他们的安装。考虑很多安装,每个安装都属于不同的用户。有些有一个安装,有些有五个安装。

事实上,我开发了一个按钮,可以从他们的安装中下载Excel信息。

我已经完成了一个contact_Download.php $ _GET [' idInstalacion']所以在主仪表板上按钮看起来像这样:

 <a href="contactosDownload.php?idInstalacion=
        <? echo $idInstalacionPOST ?>"  
        class="btnDownload btn-success btn btn-info pull-left">
    <i class="fa fa-download"></i>&nbspDescargar      
 </a>

它工作正常,当按下按钮时,contactosDowload获取idInstalacion并执行mysql选择,然后使用安装信息下载Excel。 PHPExcel完美地完成了这项工作。

即使因为有三个安装的用户可以选择其中一个安装,并且使用Ajax更新了信息,我还有一个jquery更新:

 $('#InstaSelect').change(function(e) {
    e.preventDefault();
    .....
    $('.btnDownload').attr("href", "contactosDownload.php?idInstalacion="+idInstalacion);
            ....
});

这也很有用。

像你们所有人一样,发送id并不是真正聪明的想法。 即使因为如果有人获得链接,也可以开始使用以下方法检索数据:

 http://www.aaaaa.com/contactosDownload.php?idInstalacion=1
 http://www.aaaaa.com/contactosDownload.php?idInstalacion=2

等等。

解密和解密信息并保护帖子信息的最佳选择是什么?

由于

修改

我忘了告诉用户是用他们的用户和密码授权的。并且我在登录时将所有用户存储在var会话中。

 $user_browser = $_SERVER['HTTP_USER_AGENT']; // Get the user-agent string of the user.
 $dbid = preg_replace("/[^0-9]+/", "", $dbid); // XSS protection as we might print this value
 $_SESSION['user_id'] = $dbid; 
 $_SESSION['login_string'] = hash('sha512', $tContra.$user_browser);
 $_SESSION['ultimoAcceso'] = date("Y-n-j H:i:s");
 $_SESSION['tTipoUsuLogged'] = $tTipo;
 $_SESSION['tRolUsuLogged'] = $tRolUsuario;
 $_SESSION['tEmail'] = $tUseNam; 

每个php都有(包括&#39; validateSesion.php&#39;)验证用户和tiemout。

所以现在我在contactosDownload上引入了这个验证,如果没有识别用户,则会出现/index.php(登录)。

第一级得到。

现在我必须对帖子上的id进行编码,并检查SESSION的用户是否有权下载安装。

如何使用以下方法加密&#39; /解密ID

 function encryptor($action, $string) {
    $output = false;

    $encrypt_method = "AES-256-CBC";
    //pls set your unique hashing key
    $secret_key = 'long logn text secret';
    $secret_iv = '1a2b3c4d5e';

    // hash
    $key = hash('sha256', $secret_key);

    // iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning
    $iv = substr(hash('sha256', $secret_iv), 0, 16);

    //do the encyption given text/string/number
    if( $action == 'encrypt' ) {
        $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
        $output = base64_encode($output);
    }
    else if( $action == 'decrypt' ){
        //decrypt the given text/string/number
        $output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
    }

    return $output;
}

1 个答案:

答案 0 :(得分:1)

首先要确保你的URL is encoded,以便它不那么容易阅读。

我要做的第二个建议是使用honeypot

最后,如果数据特别敏感(如财务数据),那么我建议完全远离ID,并使用可以在幕后映射到ID的哈希值。