我读了一些帖子,介绍了如何使用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> Descargar
</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;
}
答案 0 :(得分:1)
首先要确保你的URL is encoded,以便它不那么容易阅读。
我要做的第二个建议是使用honeypot。
最后,如果数据特别敏感(如财务数据),那么我建议完全远离ID,并使用可以在幕后映射到ID的哈希值。