mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-05 17:18:13 +01:00
Experimental: add function to encrypt sensitive data in database
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
* Copyright (C) 2002-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
|
||||
* Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr>
|
||||
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -72,10 +72,10 @@ class DoliDb
|
||||
|
||||
|
||||
/**
|
||||
\brief Ouverture d'une connexion vers le serveur et <EFBFBD>ventuellement une database.
|
||||
\param type Type de base de donn<EFBFBD>es (mysql ou pgsql)
|
||||
\param host Addresse de la base de donn<EFBFBD>es
|
||||
\param user Nom de l'utilisateur autoris<EFBFBD>
|
||||
\brief Ouverture d'une connexion vers le serveur et eventuellement une database.
|
||||
\param type Type de base de donnees (mysql ou pgsql)
|
||||
\param host Addresse de la base de donnees
|
||||
\param user Nom de l'utilisateur autorise
|
||||
\param pass Mot de passe
|
||||
\param name Nom de la database
|
||||
\param port Port of database server
|
||||
@@ -581,7 +581,7 @@ class DoliDb
|
||||
* \param test chaine test
|
||||
* \param resok resultat si test egal
|
||||
* \param resko resultat si test non egal
|
||||
* \return string chaine format<EFBFBD> SQL
|
||||
* \return string chaine formate SQL
|
||||
*/
|
||||
function ifsql($test,$resok,$resko)
|
||||
{
|
||||
@@ -690,8 +690,8 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief R<EFBFBD>cup<EFBFBD>re l'id gen<EFBFBD>r<EFBFBD> par le dernier INSERT.
|
||||
\param tab Nom de la table concern<EFBFBD>e par l'insert. Ne sert pas sous MySql mais requis pour compatibilit<EFBFBD> avec Postgresql
|
||||
\brief Recupere l'id genere par le dernier INSERT.
|
||||
\param tab Nom de la table concernee par l'insert. Ne sert pas sous MySql mais requis pour compatibilite avec Postgresql
|
||||
\return int id
|
||||
*/
|
||||
function last_insert_id($tab)
|
||||
@@ -703,8 +703,58 @@ class DoliDb
|
||||
|
||||
// Next function are not required. Only minor features use them.
|
||||
//--------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* \brief Encrypt sensitive data in database
|
||||
* \param field Field name to encrypt
|
||||
* \param cryptType Type of encryption (2: AES (recommended), 1: DES , 0: no encryption)
|
||||
* \param cryptKey Encryption key
|
||||
* \return return Field to encrypt if used
|
||||
*/
|
||||
function encrypt($field, $cryptType=0, $cryptKey='')
|
||||
{
|
||||
$return = $field;
|
||||
|
||||
if ($cryptType && !empty($cryptKey))
|
||||
{
|
||||
if ($cryptType == 2)
|
||||
{
|
||||
$return = 'AES_ENCRYPT('.$field.',\''.$cryptKey.'\')';
|
||||
}
|
||||
else if ($cryptType == 1)
|
||||
{
|
||||
$return = 'DES_ENCRYPT('.$field.',\''.$cryptKey.'\')';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Decrypt sensitive data in database
|
||||
* \param field Field name to decrypt
|
||||
* \param cryptType Type of encryption (2: AES (recommended), 1: DES , 0: no encryption)
|
||||
* \param cryptKey Encryption key
|
||||
* \return return Field to decrypt if used
|
||||
*/
|
||||
function decrypt($field, $cryptType=0, $cryptKey='')
|
||||
{
|
||||
$return = $field;
|
||||
|
||||
if ($cryptType && !empty($cryptKey))
|
||||
{
|
||||
if ($cryptType == 2)
|
||||
{
|
||||
$return = 'AES_DECRYPT('.$field.',\''.$cryptKey.'\')';
|
||||
}
|
||||
else if ($cryptType == 1)
|
||||
{
|
||||
$return = 'DES_DECRYPT('.$field.',\''.$cryptKey.'\')';
|
||||
}
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Renvoie l'id de la connexion
|
||||
@@ -751,7 +801,7 @@ class DoliDb
|
||||
/**
|
||||
\brief Liste des tables dans une database.
|
||||
\param database Nom de la database
|
||||
\param table Filtre sur tables <EFBFBD> rechercher
|
||||
\param table Filtre sur tables a rechercher
|
||||
\return array Tableau des tables de la base
|
||||
*/
|
||||
function DDLListTables($database, $table='')
|
||||
@@ -771,19 +821,19 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Cr<EFBFBD>e une table
|
||||
\brief Cree une table
|
||||
\param table Nom de la table
|
||||
\param fields Tableau associatif [nom champ][tableau des descriptions]
|
||||
\param primary_key Nom du champ qui sera la clef primaire
|
||||
\param unique_keys Tableau associatifs Nom de champs qui seront clef unique => valeur
|
||||
\param fulltext Tableau des Nom de champs qui seront index<EFBFBD>s en fulltext
|
||||
\param key Tableau des champs cl<EFBFBD>s noms => valeur
|
||||
\param fulltext Tableau des Nom de champs qui seront indexes en fulltext
|
||||
\param key Tableau des champs cles noms => valeur
|
||||
\param type Type de la table
|
||||
\return int <0 si KO, >=0 si OK
|
||||
*/
|
||||
function DDLCreateTable($table,$fields,$primary_key,$type,$unique_keys="",$fulltext_keys="",$keys="")
|
||||
{
|
||||
// cl<EFBFBD>s recherch<EFBFBD>es dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
|
||||
// cles recherchees dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
|
||||
// ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
|
||||
$sql = "create table ".$table."(";
|
||||
$i=0;
|
||||
@@ -847,7 +897,7 @@ class DoliDb
|
||||
}
|
||||
|
||||
/**
|
||||
\brief d<EFBFBD>crit une table dans une database.
|
||||
\brief decrit une table dans une database.
|
||||
\param table Nom de la table
|
||||
\param field Optionnel : Nom du champ si l'on veut la desc d'un champ
|
||||
\return resource
|
||||
@@ -865,13 +915,13 @@ class DoliDb
|
||||
* \brief Insert a new field in table
|
||||
* \param table Nom de la table
|
||||
* \param field_name Nom du champ a inserer
|
||||
* \param field_desc Tableau associatif de description du champ a inserer[nom du parametre][valeur du param<EFBFBD>tre]
|
||||
* \param field_desc Tableau associatif de description du champ a inserer[nom du parametre][valeur du parametre]
|
||||
* \param field_position Optionnel ex.: "after champtruc"
|
||||
* \return int <0 si KO, >0 si OK
|
||||
*/
|
||||
function DDLAddField($table,$field_name,$field_desc,$field_position="")
|
||||
{
|
||||
// cl<EFBFBD>s recherch<EFBFBD>es dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra
|
||||
// cles recherchees dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra
|
||||
// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
|
||||
$sql= "ALTER TABLE ".$table." ADD ".$field_name." ";
|
||||
$sql .= $field_desc['type'];
|
||||
@@ -919,8 +969,8 @@ class DoliDb
|
||||
/**
|
||||
\brief Create a user
|
||||
\param dolibarr_main_db_host Ip serveur
|
||||
\param dolibarr_main_db_user Nom user <EFBFBD> cr<EFBFBD>er
|
||||
\param dolibarr_main_db_pass Mot de passe user <EFBFBD> cr<EFBFBD>er
|
||||
\param dolibarr_main_db_user Nom user a creer
|
||||
\param dolibarr_main_db_pass Mot de passe user a creer
|
||||
\param dolibarr_main_db_name Database name where user must be granted
|
||||
\return int <0 si KO, >=0 si OK
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user