Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dolibarr
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container registry
Model registry
Analyze
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Software_Artifact_Infrastructure_Repository
dolibarr
Commits
163433f7
Commit
163433f7
authored
Jun 27, 2009
by
Regis Houssin
Browse files
Options
Downloads
Patches
Plain Diff
Experimental: add function to encrypt sensitive data in database
parent
18e7293c
No related branches found
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
htdocs/lib/databases/mysql.lib.php
+69
-19
69 additions, 19 deletions
htdocs/lib/databases/mysql.lib.php
htdocs/lib/databases/mysqli.lib.php
+4
-3
4 additions, 3 deletions
htdocs/lib/databases/mysqli.lib.php
with
73 additions
and
22 deletions
htdocs/lib/databases/mysql.lib.php
+
69
−
19
View file @
163433f7
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
* Copyright (C) 2002-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2002-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* Copyright (C) 2005-200
7
Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2005-200
9
Regis Houssin <regis@dolibarr.fr>
*
*
* This program is free software; you can redistribute it and/or modify
* 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
* it under the terms of the GNU General Public License as published by
...
@@ -72,10 +72,10 @@ class DoliDb
...
@@ -72,10 +72,10 @@ class DoliDb
/**
/**
\brief Ouverture d'une connexion vers le serveur et
�
ventuellement une database.
\brief Ouverture d'une connexion vers le serveur et
e
ventuellement une database.
\param type Type de base de donn
�
es (mysql ou pgsql)
\param type Type de base de donn
e
es (mysql ou pgsql)
\param host Addresse de la base de donn
�
es
\param host Addresse de la base de donn
e
es
\param user Nom de l'utilisateur autoris
�
\param user Nom de l'utilisateur autoris
e
\param pass Mot de passe
\param pass Mot de passe
\param name Nom de la database
\param name Nom de la database
\param port Port of database server
\param port Port of database server
...
@@ -581,7 +581,7 @@ class DoliDb
...
@@ -581,7 +581,7 @@ class DoliDb
* \param test chaine test
* \param test chaine test
* \param resok resultat si test egal
* \param resok resultat si test egal
* \param resko resultat si test non egal
* \param resko resultat si test non egal
* \return string chaine format
�
SQL
* \return string chaine format
e
SQL
*/
*/
function
ifsql
(
$test
,
$resok
,
$resko
)
function
ifsql
(
$test
,
$resok
,
$resko
)
{
{
...
@@ -690,8 +690,8 @@ class DoliDb
...
@@ -690,8 +690,8 @@ class DoliDb
}
}
/**
/**
\brief R
�
cup
�
re l'id gen
�r�
par le dernier INSERT.
\brief R
e
cup
e
re l'id gen
ere
par le dernier INSERT.
\param tab Nom de la table concern
�
e par l'insert. Ne sert pas sous MySql mais requis pour compatibilit
�
avec Postgresql
\param tab Nom de la table concern
e
e par l'insert. Ne sert pas sous MySql mais requis pour compatibilit
e
avec Postgresql
\return int id
\return int id
*/
*/
function
last_insert_id
(
$tab
)
function
last_insert_id
(
$tab
)
...
@@ -704,7 +704,57 @@ class DoliDb
...
@@ -704,7 +704,57 @@ class DoliDb
// Next function are not required. Only minor features use them.
// 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
\brief Renvoie l'id de la connexion
...
@@ -751,7 +801,7 @@ class DoliDb
...
@@ -751,7 +801,7 @@ class DoliDb
/**
/**
\brief Liste des tables dans une database.
\brief Liste des tables dans une database.
\param database Nom de la database
\param database Nom de la database
\param table Filtre sur tables
�
rechercher
\param table Filtre sur tables
a
rechercher
\return array Tableau des tables de la base
\return array Tableau des tables de la base
*/
*/
function
DDLListTables
(
$database
,
$table
=
''
)
function
DDLListTables
(
$database
,
$table
=
''
)
...
@@ -771,19 +821,19 @@ class DoliDb
...
@@ -771,19 +821,19 @@ class DoliDb
}
}
/**
/**
\brief Cr
�
e une table
\brief Cr
e
e une table
\param table Nom de la table
\param table Nom de la table
\param fields Tableau associatif [nom champ][tableau des descriptions]
\param fields Tableau associatif [nom champ][tableau des descriptions]
\param primary_key Nom du champ qui sera la clef primaire
\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 unique_keys Tableau associatifs Nom de champs qui seront clef unique => valeur
\param fulltext Tableau des Nom de champs qui seront index
�
s en fulltext
\param fulltext Tableau des Nom de champs qui seront index
e
s en fulltext
\param key Tableau des champs cl
�
s noms => valeur
\param key Tableau des champs cl
e
s noms => valeur
\param type Type de la table
\param type Type de la table
\return int <0 si KO, >=0 si OK
\return int <0 si KO, >=0 si OK
*/
*/
function
DDLCreateTable
(
$table
,
$fields
,
$primary_key
,
$type
,
$unique_keys
=
""
,
$fulltext_keys
=
""
,
$keys
=
""
)
function
DDLCreateTable
(
$table
,
$fields
,
$primary_key
,
$type
,
$unique_keys
=
""
,
$fulltext_keys
=
""
,
$keys
=
""
)
{
{
// cl
�
s recherch
�
es dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra
// cl
e
s recherch
e
es 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');
// ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
$sql
=
"create table "
.
$table
.
"("
;
$sql
=
"create table "
.
$table
.
"("
;
$i
=
0
;
$i
=
0
;
...
@@ -847,7 +897,7 @@ class DoliDb
...
@@ -847,7 +897,7 @@ class DoliDb
}
}
/**
/**
\brief d
�
crit une table dans une database.
\brief d
e
crit une table dans une database.
\param table Nom de la table
\param table Nom de la table
\param field Optionnel : Nom du champ si l'on veut la desc d'un champ
\param field Optionnel : Nom du champ si l'on veut la desc d'un champ
\return resource
\return resource
...
@@ -865,13 +915,13 @@ class DoliDb
...
@@ -865,13 +915,13 @@ class DoliDb
* \brief Insert a new field in table
* \brief Insert a new field in table
* \param table Nom de la table
* \param table Nom de la table
* \param field_name Nom du champ a inserer
* \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
�
tre]
* \param field_desc Tableau associatif de description du champ a inserer[nom du parametre][valeur du param
e
tre]
* \param field_position Optionnel ex.: "after champtruc"
* \param field_position Optionnel ex.: "after champtruc"
* \return int <0 si KO, >0 si OK
* \return int <0 si KO, >0 si OK
*/
*/
function
DDLAddField
(
$table
,
$field_name
,
$field_desc
,
$field_position
=
""
)
function
DDLAddField
(
$table
,
$field_name
,
$field_desc
,
$field_position
=
""
)
{
{
// cl
�
s recherch
�
es dans le tableau des descriptions (field_desc) : type,value,attribute,null,default,extra
// cl
e
s recherch
e
es 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');
// ex. : $field_desc = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment');
$sql
=
"ALTER TABLE "
.
$table
.
" ADD "
.
$field_name
.
" "
;
$sql
=
"ALTER TABLE "
.
$table
.
" ADD "
.
$field_name
.
" "
;
$sql
.
=
$field_desc
[
'type'
];
$sql
.
=
$field_desc
[
'type'
];
...
@@ -919,8 +969,8 @@ class DoliDb
...
@@ -919,8 +969,8 @@ class DoliDb
/**
/**
\brief Create a user
\brief Create a user
\param dolibarr_main_db_host Ip serveur
\param dolibarr_main_db_host Ip serveur
\param dolibarr_main_db_user Nom user
�
cr
�
er
\param dolibarr_main_db_user Nom user
a
cr
e
er
\param dolibarr_main_db_pass Mot de passe user
�
cr
�
er
\param dolibarr_main_db_pass Mot de passe user
a
cr
e
er
\param dolibarr_main_db_name Database name where user must be granted
\param dolibarr_main_db_name Database name where user must be granted
\return int <0 si KO, >=0 si OK
\return int <0 si KO, >=0 si OK
*/
*/
...
...
This diff is collapsed.
Click to expand it.
htdocs/lib/databases/mysqli.lib.php
+
4
−
3
View file @
163433f7
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
* Copyright (C) 2002-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2002-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* Copyright (C) 2005-200
7
Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2005-200
9
Regis Houssin <regis@dolibarr.fr>
*
*
* This program is free software; you can redistribute it and/or modify
* 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
* it under the terms of the GNU General Public License as published by
...
@@ -465,7 +465,7 @@ class DoliDb
...
@@ -465,7 +465,7 @@ class DoliDb
{
{
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
// Si le resultset n'est pas fourni, on prend le dernier utilise sur cette connexion
if
(
!
is_object
(
$resultset
))
{
$resultset
=
$this
->
results
;
}
if
(
!
is_object
(
$resultset
))
{
$resultset
=
$this
->
results
;
}
// Si resultset en est un, on libere la m
�
moire
// Si resultset en est un, on libere la m
e
moire
if
(
is_object
(
$resultset
))
mysqli_free_result
(
$resultset
);
if
(
is_object
(
$resultset
))
mysqli_free_result
(
$resultset
);
}
}
...
@@ -743,6 +743,7 @@ class DoliDb
...
@@ -743,6 +743,7 @@ class DoliDb
return
$return
;
return
$return
;
}
}
/**
/**
* \brief Decrypt sensitive data in database
* \brief Decrypt sensitive data in database
* \param field Field name to decrypt
* \param field Field name to decrypt
...
@@ -750,7 +751,7 @@ class DoliDb
...
@@ -750,7 +751,7 @@ class DoliDb
* \param cryptKey Encryption key
* \param cryptKey Encryption key
* \return return Field to decrypt if used
* \return return Field to decrypt if used
*/
*/
function
decrypt
(
$field
,
$cryptType
=
2
,
$cryptKey
=
''
)
function
decrypt
(
$field
,
$cryptType
=
0
,
$cryptKey
=
''
)
{
{
$return
=
$field
;
$return
=
$field
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment