Доброго времени суток, уважаемые читатели.
Сегодня я расскажу об одном весьма интересном опыте. Потребоваль для одного проекта вести базу логинов и паролей к сайту в 1С. Да так, чтоб в базе пароли хранились не в открытом виде, а зашифрованные методом bCrypt. Ввиду того, что 1С понятия не имеет что это такое, было принято шифрование выполнять на стороне веб-сервера, а со стороны 1С вызывать web-service, передавая в качестве параметра пароль в открытом виде, а в ответ получая зашифрованную строку.
Итак реализация:
На стороне веб-сервера находится файл Service.php
<?php $response = array("error" => FALSE); if (isset($_GET['Pass'])) { $pass = $_GET['Pass']; $response["pass"] = password_hash($pass, PASSWORD_BCRYPT); } else { $response["error"] = TRUE; $response["error_msg"] = "Требуемый параметр не обнаружен!"; } echo json_encode($response, JSON_UNESCAPED_UNICODE); ?>
При вызове данного сервиса ожидается передача параметра Pass — методом GET, который содержит пароль в чистом виде. Сервис шифрует его и возвращает в формате JSON ответ, содержащий информацию об ошибке или ее осутствии и хеш пароля, который вернула функция шифрования.
выглядит это следующим образом:
Вызываем сервис http://hotel.skalnyy.com/api/Service.php без указания параметра Pass, получаем ответ:
{"error":true,"error_msg":"Требуемый параметр не обнаружен!"}
Вызываем сервис http://hotel.skalnyy.com/api/Service.php?Pass=123 указывая параметру Pass пароль, который мы хотим зашифровать, получаем ответ:
{"error":false,"pass":"$2y$10$rIr6t8EHjwiSdGwsy1SABea2AHYPq0G5F4Wa.kH4EvnEZdw.Hrzce"}
на стороне 1С:7.7:
<< Продолжение следует… >>