How to implement search on encrypted database fields
up vote
1
down vote
favorite
Iam Using PHP & MySql for my web application. I have a requirement where I need to encrypt user specific information, say name & email_id.
$name = "Kevin John";
$encryptionMethod = "AES-256-CBC";
$secretHash = "25c6c7ff35b8879b151f2136cd13574";
$enc_name = openssl_encrypt($textToEncrypt, $encryptionMethod, $secretHash);
Iam storing this encrypted name in my database. But the real problem is that I need to search the users based on their name.For example:-
$qry = "select * from users where name like %john%";
Any suggestion appreciated
php mysql search encryption
|
show 7 more comments
up vote
1
down vote
favorite
Iam Using PHP & MySql for my web application. I have a requirement where I need to encrypt user specific information, say name & email_id.
$name = "Kevin John";
$encryptionMethod = "AES-256-CBC";
$secretHash = "25c6c7ff35b8879b151f2136cd13574";
$enc_name = openssl_encrypt($textToEncrypt, $encryptionMethod, $secretHash);
Iam storing this encrypted name in my database. But the real problem is that I need to search the users based on their name.For example:-
$qry = "select * from users where name like %john%";
Any suggestion appreciated
php mysql search encryption
i can remember this question is asked before in within the last 2 or 3 monthes. i will try to find it again.
– Raymond Nijland
Nov 12 at 12:05
@RaymondNijland Thank you for your valuable time. Kindly note that I need to implement search using LIKE operator (%name%)
– Herald Charley
Nov 12 at 12:49
@HeraldCharley It is not suggested to encrypt the data that you want implement search on. I'm missing the context. Why do you want to encrypt the name?
– new_user
Nov 12 at 12:53
@new_user I have a table where I store user specific information like name, email, dob. For security purposes my client doesnot want to store that information as just plain text and want to encrypt that data. But my web application has a search functionality(autosuggest) which searches the database with name as query parameter. Any possible solutions ?????
– Herald Charley
Nov 12 at 13:12
In that case I would suggest you to encrypt everything but name in that user info table. If that is not possible. a possible solution is to query for all data and write for stringContains logic on the app layer.
– new_user
Nov 12 at 13:16
|
show 7 more comments
up vote
1
down vote
favorite
up vote
1
down vote
favorite
Iam Using PHP & MySql for my web application. I have a requirement where I need to encrypt user specific information, say name & email_id.
$name = "Kevin John";
$encryptionMethod = "AES-256-CBC";
$secretHash = "25c6c7ff35b8879b151f2136cd13574";
$enc_name = openssl_encrypt($textToEncrypt, $encryptionMethod, $secretHash);
Iam storing this encrypted name in my database. But the real problem is that I need to search the users based on their name.For example:-
$qry = "select * from users where name like %john%";
Any suggestion appreciated
php mysql search encryption
Iam Using PHP & MySql for my web application. I have a requirement where I need to encrypt user specific information, say name & email_id.
$name = "Kevin John";
$encryptionMethod = "AES-256-CBC";
$secretHash = "25c6c7ff35b8879b151f2136cd13574";
$enc_name = openssl_encrypt($textToEncrypt, $encryptionMethod, $secretHash);
Iam storing this encrypted name in my database. But the real problem is that I need to search the users based on their name.For example:-
$qry = "select * from users where name like %john%";
Any suggestion appreciated
php mysql search encryption
php mysql search encryption
edited Nov 12 at 12:42
asked Nov 12 at 11:54
Herald Charley
41117
41117
i can remember this question is asked before in within the last 2 or 3 monthes. i will try to find it again.
– Raymond Nijland
Nov 12 at 12:05
@RaymondNijland Thank you for your valuable time. Kindly note that I need to implement search using LIKE operator (%name%)
– Herald Charley
Nov 12 at 12:49
@HeraldCharley It is not suggested to encrypt the data that you want implement search on. I'm missing the context. Why do you want to encrypt the name?
– new_user
Nov 12 at 12:53
@new_user I have a table where I store user specific information like name, email, dob. For security purposes my client doesnot want to store that information as just plain text and want to encrypt that data. But my web application has a search functionality(autosuggest) which searches the database with name as query parameter. Any possible solutions ?????
– Herald Charley
Nov 12 at 13:12
In that case I would suggest you to encrypt everything but name in that user info table. If that is not possible. a possible solution is to query for all data and write for stringContains logic on the app layer.
– new_user
Nov 12 at 13:16
|
show 7 more comments
i can remember this question is asked before in within the last 2 or 3 monthes. i will try to find it again.
– Raymond Nijland
Nov 12 at 12:05
@RaymondNijland Thank you for your valuable time. Kindly note that I need to implement search using LIKE operator (%name%)
– Herald Charley
Nov 12 at 12:49
@HeraldCharley It is not suggested to encrypt the data that you want implement search on. I'm missing the context. Why do you want to encrypt the name?
– new_user
Nov 12 at 12:53
@new_user I have a table where I store user specific information like name, email, dob. For security purposes my client doesnot want to store that information as just plain text and want to encrypt that data. But my web application has a search functionality(autosuggest) which searches the database with name as query parameter. Any possible solutions ?????
– Herald Charley
Nov 12 at 13:12
In that case I would suggest you to encrypt everything but name in that user info table. If that is not possible. a possible solution is to query for all data and write for stringContains logic on the app layer.
– new_user
Nov 12 at 13:16
i can remember this question is asked before in within the last 2 or 3 monthes. i will try to find it again.
– Raymond Nijland
Nov 12 at 12:05
i can remember this question is asked before in within the last 2 or 3 monthes. i will try to find it again.
– Raymond Nijland
Nov 12 at 12:05
@RaymondNijland Thank you for your valuable time. Kindly note that I need to implement search using LIKE operator (%name%)
– Herald Charley
Nov 12 at 12:49
@RaymondNijland Thank you for your valuable time. Kindly note that I need to implement search using LIKE operator (%name%)
– Herald Charley
Nov 12 at 12:49
@HeraldCharley It is not suggested to encrypt the data that you want implement search on. I'm missing the context. Why do you want to encrypt the name?
– new_user
Nov 12 at 12:53
@HeraldCharley It is not suggested to encrypt the data that you want implement search on. I'm missing the context. Why do you want to encrypt the name?
– new_user
Nov 12 at 12:53
@new_user I have a table where I store user specific information like name, email, dob. For security purposes my client doesnot want to store that information as just plain text and want to encrypt that data. But my web application has a search functionality(autosuggest) which searches the database with name as query parameter. Any possible solutions ?????
– Herald Charley
Nov 12 at 13:12
@new_user I have a table where I store user specific information like name, email, dob. For security purposes my client doesnot want to store that information as just plain text and want to encrypt that data. But my web application has a search functionality(autosuggest) which searches the database with name as query parameter. Any possible solutions ?????
– Herald Charley
Nov 12 at 13:12
In that case I would suggest you to encrypt everything but name in that user info table. If that is not possible. a possible solution is to query for all data and write for stringContains logic on the app layer.
– new_user
Nov 12 at 13:16
In that case I would suggest you to encrypt everything but name in that user info table. If that is not possible. a possible solution is to query for all data and write for stringContains logic on the app layer.
– new_user
Nov 12 at 13:16
|
show 7 more comments
3 Answers
3
active
oldest
votes
up vote
0
down vote
It is not suggested to encrypt the data that you want to search on.
- you can either choose not to encrypt the field that you want to search on.
or you can fetch all the data, decrypt and search if the row contains what you want on the app layer(I would not suggest this approach).
// Pseudocode
$searchTerm = 'john';
$allNamesQuery = 'select * from users';
$allNamesData = execQuery($allNamesQuery);
$suggestions = ;
foreach($allNamesData as $row){
$row = decryptNameFromRow($row);
if(contains($row['name'], $searchTerm))
array_push($suggestions, $row);
}
print_r($suggestions);
Please suggest if there are any alternatives.
what if you have miliions or even billions of records?
– Raymond Nijland
Nov 12 at 13:40
@RaymondNijland In my case I have 2 million record
– Herald Charley
Nov 12 at 13:44
add a comment |
up vote
0
down vote
You may have several options, some easy some not
- search / key fields are usually stored unencrypted to overcome this problem (you don't want this apparently)
- as already suggested - scanning the whole table, decrypting every record would work, but may not be feasible
- you may use static IV achieving deterministic encrytion, encrypt the searched term and search already encrypted value. Knowing that static IV is lowering (and sometimes breaking) the security level
- you may have a look at homomorphic encrytion specifically designed for operations over encrypted data, but without knowing what are you doing that may be very steep and error prone path to implement own crypto (not recommended even for seasoned professionals). I did not dare to go through this door yet.
- you may store cryptographic hashes (e. g. sha256) of the indexed values (maybe along encrypted values) . Then you could just search for a hashed search term without being able to recoved original value
add a comment |
up vote
0
down vote
Use AES Encryption & Decryption in SQL for implementing search on encrypted DB fields. syntax:-
AES_ENCRYPT('Text_to_encrypt', 'secret_key')
AES_DECRYPT('Text_to_decrypt', 'secret_key')
First encrypt & store the data in DB using AES Encryption in sql
INSERT INTO User (fname,email,mobile) VALUES
(AES_ENCRYPT('Arun gopan', 'Qwfe345dgfdg'), AES_ENCRYPT('arun123@fa.com', 'Qwfe345dgfdg'),'9658475577');
Now you can query the DB using AES DECRYPT in sql for performing search operations.
SELECT AES_DECRYPT(fname,'Qwfe345dgfdg'), AES_DECRYPT(email,'Qwfe345dgfdg')
FROM User
WHERE AES_DECRYPT(fname,'Qwfe345dgfdg') LIKE '%Arun%';
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53261629%2fhow-to-implement-search-on-encrypted-database-fields%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
It is not suggested to encrypt the data that you want to search on.
- you can either choose not to encrypt the field that you want to search on.
or you can fetch all the data, decrypt and search if the row contains what you want on the app layer(I would not suggest this approach).
// Pseudocode
$searchTerm = 'john';
$allNamesQuery = 'select * from users';
$allNamesData = execQuery($allNamesQuery);
$suggestions = ;
foreach($allNamesData as $row){
$row = decryptNameFromRow($row);
if(contains($row['name'], $searchTerm))
array_push($suggestions, $row);
}
print_r($suggestions);
Please suggest if there are any alternatives.
what if you have miliions or even billions of records?
– Raymond Nijland
Nov 12 at 13:40
@RaymondNijland In my case I have 2 million record
– Herald Charley
Nov 12 at 13:44
add a comment |
up vote
0
down vote
It is not suggested to encrypt the data that you want to search on.
- you can either choose not to encrypt the field that you want to search on.
or you can fetch all the data, decrypt and search if the row contains what you want on the app layer(I would not suggest this approach).
// Pseudocode
$searchTerm = 'john';
$allNamesQuery = 'select * from users';
$allNamesData = execQuery($allNamesQuery);
$suggestions = ;
foreach($allNamesData as $row){
$row = decryptNameFromRow($row);
if(contains($row['name'], $searchTerm))
array_push($suggestions, $row);
}
print_r($suggestions);
Please suggest if there are any alternatives.
what if you have miliions or even billions of records?
– Raymond Nijland
Nov 12 at 13:40
@RaymondNijland In my case I have 2 million record
– Herald Charley
Nov 12 at 13:44
add a comment |
up vote
0
down vote
up vote
0
down vote
It is not suggested to encrypt the data that you want to search on.
- you can either choose not to encrypt the field that you want to search on.
or you can fetch all the data, decrypt and search if the row contains what you want on the app layer(I would not suggest this approach).
// Pseudocode
$searchTerm = 'john';
$allNamesQuery = 'select * from users';
$allNamesData = execQuery($allNamesQuery);
$suggestions = ;
foreach($allNamesData as $row){
$row = decryptNameFromRow($row);
if(contains($row['name'], $searchTerm))
array_push($suggestions, $row);
}
print_r($suggestions);
Please suggest if there are any alternatives.
It is not suggested to encrypt the data that you want to search on.
- you can either choose not to encrypt the field that you want to search on.
or you can fetch all the data, decrypt and search if the row contains what you want on the app layer(I would not suggest this approach).
// Pseudocode
$searchTerm = 'john';
$allNamesQuery = 'select * from users';
$allNamesData = execQuery($allNamesQuery);
$suggestions = ;
foreach($allNamesData as $row){
$row = decryptNameFromRow($row);
if(contains($row['name'], $searchTerm))
array_push($suggestions, $row);
}
print_r($suggestions);
Please suggest if there are any alternatives.
answered Nov 12 at 13:26
new_user
1,2671017
1,2671017
what if you have miliions or even billions of records?
– Raymond Nijland
Nov 12 at 13:40
@RaymondNijland In my case I have 2 million record
– Herald Charley
Nov 12 at 13:44
add a comment |
what if you have miliions or even billions of records?
– Raymond Nijland
Nov 12 at 13:40
@RaymondNijland In my case I have 2 million record
– Herald Charley
Nov 12 at 13:44
what if you have miliions or even billions of records?
– Raymond Nijland
Nov 12 at 13:40
what if you have miliions or even billions of records?
– Raymond Nijland
Nov 12 at 13:40
@RaymondNijland In my case I have 2 million record
– Herald Charley
Nov 12 at 13:44
@RaymondNijland In my case I have 2 million record
– Herald Charley
Nov 12 at 13:44
add a comment |
up vote
0
down vote
You may have several options, some easy some not
- search / key fields are usually stored unencrypted to overcome this problem (you don't want this apparently)
- as already suggested - scanning the whole table, decrypting every record would work, but may not be feasible
- you may use static IV achieving deterministic encrytion, encrypt the searched term and search already encrypted value. Knowing that static IV is lowering (and sometimes breaking) the security level
- you may have a look at homomorphic encrytion specifically designed for operations over encrypted data, but without knowing what are you doing that may be very steep and error prone path to implement own crypto (not recommended even for seasoned professionals). I did not dare to go through this door yet.
- you may store cryptographic hashes (e. g. sha256) of the indexed values (maybe along encrypted values) . Then you could just search for a hashed search term without being able to recoved original value
add a comment |
up vote
0
down vote
You may have several options, some easy some not
- search / key fields are usually stored unencrypted to overcome this problem (you don't want this apparently)
- as already suggested - scanning the whole table, decrypting every record would work, but may not be feasible
- you may use static IV achieving deterministic encrytion, encrypt the searched term and search already encrypted value. Knowing that static IV is lowering (and sometimes breaking) the security level
- you may have a look at homomorphic encrytion specifically designed for operations over encrypted data, but without knowing what are you doing that may be very steep and error prone path to implement own crypto (not recommended even for seasoned professionals). I did not dare to go through this door yet.
- you may store cryptographic hashes (e. g. sha256) of the indexed values (maybe along encrypted values) . Then you could just search for a hashed search term without being able to recoved original value
add a comment |
up vote
0
down vote
up vote
0
down vote
You may have several options, some easy some not
- search / key fields are usually stored unencrypted to overcome this problem (you don't want this apparently)
- as already suggested - scanning the whole table, decrypting every record would work, but may not be feasible
- you may use static IV achieving deterministic encrytion, encrypt the searched term and search already encrypted value. Knowing that static IV is lowering (and sometimes breaking) the security level
- you may have a look at homomorphic encrytion specifically designed for operations over encrypted data, but without knowing what are you doing that may be very steep and error prone path to implement own crypto (not recommended even for seasoned professionals). I did not dare to go through this door yet.
- you may store cryptographic hashes (e. g. sha256) of the indexed values (maybe along encrypted values) . Then you could just search for a hashed search term without being able to recoved original value
You may have several options, some easy some not
- search / key fields are usually stored unencrypted to overcome this problem (you don't want this apparently)
- as already suggested - scanning the whole table, decrypting every record would work, but may not be feasible
- you may use static IV achieving deterministic encrytion, encrypt the searched term and search already encrypted value. Knowing that static IV is lowering (and sometimes breaking) the security level
- you may have a look at homomorphic encrytion specifically designed for operations over encrypted data, but without knowing what are you doing that may be very steep and error prone path to implement own crypto (not recommended even for seasoned professionals). I did not dare to go through this door yet.
- you may store cryptographic hashes (e. g. sha256) of the indexed values (maybe along encrypted values) . Then you could just search for a hashed search term without being able to recoved original value
answered Nov 12 at 17:34
gusto2
4,3712919
4,3712919
add a comment |
add a comment |
up vote
0
down vote
Use AES Encryption & Decryption in SQL for implementing search on encrypted DB fields. syntax:-
AES_ENCRYPT('Text_to_encrypt', 'secret_key')
AES_DECRYPT('Text_to_decrypt', 'secret_key')
First encrypt & store the data in DB using AES Encryption in sql
INSERT INTO User (fname,email,mobile) VALUES
(AES_ENCRYPT('Arun gopan', 'Qwfe345dgfdg'), AES_ENCRYPT('arun123@fa.com', 'Qwfe345dgfdg'),'9658475577');
Now you can query the DB using AES DECRYPT in sql for performing search operations.
SELECT AES_DECRYPT(fname,'Qwfe345dgfdg'), AES_DECRYPT(email,'Qwfe345dgfdg')
FROM User
WHERE AES_DECRYPT(fname,'Qwfe345dgfdg') LIKE '%Arun%';
add a comment |
up vote
0
down vote
Use AES Encryption & Decryption in SQL for implementing search on encrypted DB fields. syntax:-
AES_ENCRYPT('Text_to_encrypt', 'secret_key')
AES_DECRYPT('Text_to_decrypt', 'secret_key')
First encrypt & store the data in DB using AES Encryption in sql
INSERT INTO User (fname,email,mobile) VALUES
(AES_ENCRYPT('Arun gopan', 'Qwfe345dgfdg'), AES_ENCRYPT('arun123@fa.com', 'Qwfe345dgfdg'),'9658475577');
Now you can query the DB using AES DECRYPT in sql for performing search operations.
SELECT AES_DECRYPT(fname,'Qwfe345dgfdg'), AES_DECRYPT(email,'Qwfe345dgfdg')
FROM User
WHERE AES_DECRYPT(fname,'Qwfe345dgfdg') LIKE '%Arun%';
add a comment |
up vote
0
down vote
up vote
0
down vote
Use AES Encryption & Decryption in SQL for implementing search on encrypted DB fields. syntax:-
AES_ENCRYPT('Text_to_encrypt', 'secret_key')
AES_DECRYPT('Text_to_decrypt', 'secret_key')
First encrypt & store the data in DB using AES Encryption in sql
INSERT INTO User (fname,email,mobile) VALUES
(AES_ENCRYPT('Arun gopan', 'Qwfe345dgfdg'), AES_ENCRYPT('arun123@fa.com', 'Qwfe345dgfdg'),'9658475577');
Now you can query the DB using AES DECRYPT in sql for performing search operations.
SELECT AES_DECRYPT(fname,'Qwfe345dgfdg'), AES_DECRYPT(email,'Qwfe345dgfdg')
FROM User
WHERE AES_DECRYPT(fname,'Qwfe345dgfdg') LIKE '%Arun%';
Use AES Encryption & Decryption in SQL for implementing search on encrypted DB fields. syntax:-
AES_ENCRYPT('Text_to_encrypt', 'secret_key')
AES_DECRYPT('Text_to_decrypt', 'secret_key')
First encrypt & store the data in DB using AES Encryption in sql
INSERT INTO User (fname,email,mobile) VALUES
(AES_ENCRYPT('Arun gopan', 'Qwfe345dgfdg'), AES_ENCRYPT('arun123@fa.com', 'Qwfe345dgfdg'),'9658475577');
Now you can query the DB using AES DECRYPT in sql for performing search operations.
SELECT AES_DECRYPT(fname,'Qwfe345dgfdg'), AES_DECRYPT(email,'Qwfe345dgfdg')
FROM User
WHERE AES_DECRYPT(fname,'Qwfe345dgfdg') LIKE '%Arun%';
answered Nov 13 at 11:08
Herald Charley
41117
41117
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53261629%2fhow-to-implement-search-on-encrypted-database-fields%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
i can remember this question is asked before in within the last 2 or 3 monthes. i will try to find it again.
– Raymond Nijland
Nov 12 at 12:05
@RaymondNijland Thank you for your valuable time. Kindly note that I need to implement search using LIKE operator (%name%)
– Herald Charley
Nov 12 at 12:49
@HeraldCharley It is not suggested to encrypt the data that you want implement search on. I'm missing the context. Why do you want to encrypt the name?
– new_user
Nov 12 at 12:53
@new_user I have a table where I store user specific information like name, email, dob. For security purposes my client doesnot want to store that information as just plain text and want to encrypt that data. But my web application has a search functionality(autosuggest) which searches the database with name as query parameter. Any possible solutions ?????
– Herald Charley
Nov 12 at 13:12
In that case I would suggest you to encrypt everything but name in that user info table. If that is not possible. a possible solution is to query for all data and write for stringContains logic on the app layer.
– new_user
Nov 12 at 13:16