Intereting Posts
Получение данных во время цикла с использованием левого соединения Получение одной строки, одного столбца с PDO Управление вызовом AJAX с помощью Zend Framework PHP MySQLi подготовил инструкции и выборку подмножества столбцов получить информацию заголовка из запроса php curl post php strip non currency символы из строки Как запомнить опубликованные поля в формах для выпадающих элементов? Какова самая эффективная проверка того, заканчивается ли строка PHP другой строкой? Нечетное поведение оператора switch Почему моя строка SQL вызывает ошибку «Ошибка сообщения: ошибка синтаксиса: синтаксическая ошибка» в PHP? mysql найти наименьший + уникальный идентификатор Yii Fixtures – Исключение: Неизвестные свойства «проекты» для класса «ProjectTest» Как получить доступ к глобальным переменным $ _SESSION и $ _COOKIE из приложения laravel? Вопросы производительности JSON и XML Автоматическое перенаправление на другие страницы на регулярных коммутаторах

Шифрование данных элемента с помощью ключевых файлов

Я работаю на веб-сайте, где я хочу, чтобы члены могли поддерживать список элементов в своем аккаунте. Кроме того, они должны иметь возможность просматривать / просматривать все элементы, принадлежащие другим участникам (за исключением случаев отсутствия информации о владельце).

Я хочу иметь возможность предложить практическое заверение безопасности членам, так что, если они войдут в свою учетную запись с устройства, у которого нет своего ключевого файла, они все равно смогут получить доступ и использовать свою учетную запись, но это будет ограничено потому что он не будет обнаруживать, что у них есть какие-либо предметы (и, следовательно, не будет иметь никаких прав на обновление любого из своих элементов или создание новых элементов). Я пытаюсь заставить его работать с чем-то вроде ниже, но у меня его нет – любой совет будет очень благодарен! …

<?php #Encryption/decryption functions ; function encrypt($value, $key) { $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND); return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $value, MCRYPT_MODE_CBC, $iv); } function decrypt($value, $key) { $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND); return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $value, MCRYPT_MODE_CBC, $iv); } #Encryption key that would normally be seeded by user ; $keyfile='9TOxo1Uy5JsiW1jRPS61'; #Database sandbox; #------------------------------------------------------------------------------; $db = new PDO('mysql:dbname=mydb;host=localhost', 'root', '' ); #$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); #Create dummy table ; $db->exec("CREATE table items ( owner_id VARCHAR( 20 ) NOT NULL, ownername VARCHAR( 50 ) NOT NULL, itemname VARCHAR( 100 ) NOT NULL, itemdetails VARCHAR( 250 ) NOT NULL);"); #Populate with test data ; session_start(); $insert= $db->prepare("INSERT INTO items(owner_id, ownername, itemname, itemdetails) VALUES (?,?,?,?)"); $_SESSION['user_id']=0001; $db->execute(array(encrypt($_SESSION['user_id'],$keyfile)),"Bob","Bobs 1st Item","Item description of Bobs first item"); $db->execute(array(encrypt($_SESSION['user_id'],$keyfile)),"Bob","Bobs 2nd Item","Item description of Bobs second item"); $_SESSION['user_id']=0002; $db->execute(array(encrypt($_SESSION['user_id'],$keyfile)),"Tom","Toms Item","Item description of Toms first item"); #Only return items belonging to the current user - but returns nothing without their keyfile present even if the user is logged in) $userquery = $db->prepare(" SELECT decrypt(ownername, :ownerkey) as ownername, itemname, itemdetails FROM items WHERE $_SESSION('userid') == decrypt(owner_id, :ownerkey) "); $userquery->execute(array(':ownerkey'=> "$keyfile")); $result=$userquery->fetchall(); #Without their keyfile a user can still search the items table but with meaningless owner information ; $fullquery = $db->prepare("SELECT ownername, itemname, itemdetails FROM items"); $userquery->execute(); $result=$fullquery->fetchall(); ?>