-
Пароль и открытый текст никогда не отправляется и не хранится в DB.
-
Encrypt/decrypt полностью на client-side за счет CryptoJS (AES-256) и localStorage.
Иными словами, шифрование происходит в Вашем браузере, а не на стороне приложения (как у 99% аналогичных сервисов) после отправки. Таким образом, даже администратор сервиса не может получить доступ к Вашему открытому тексту.
-
В случае, если Вы или кто-то другой, введет неправильный пароль с включенной функцией “Delete after reading”, то заметка так же будет удалена.
-
Если Вы не используете автоматическую генерацию, пожалуйста, соблюдайте следующие требования к паролю -
[a-zA-Z0-9]{12,64}
. Надеюсь, что Вам поможет данный snippet.
- Удаление заметки после прочтения
- Генерация пароля за пользователя, устойчивого к прямому перебору
- Генерация “quick link” - позволяет получить ссылку, включающую в себя UUID+%password% для удобства пользователя: Вы можете передать её по незащищенным каналам связи, если получатель по умолчанию сразу прочитает записку после публикации (обязательно с включенной опцией "удалить после прочтения" и генерацией пароля)
beta-версияРефакторингОптимизацияНайти другую либудля шифрования на стороне клиента, так как текущая очень слабая в плане криптостойкостиЗакончить реализациюисходной идеи - шифрование/расшифровка полностью на стороне клиента (даже открытый текст на сервер не отправляется), без надобности хранения пароля в БД (see example:db.json
). Ваши заметки не сможет прочитать даже владелец сервиса.- Совместить хранение с Redis: оставить всё в
db.json
как и ранее, за исключениемcrypt_textarea
- (r.set(__uuid, crypt_textarea)
) Прикрепить конфигидля Nginx и GunicornПродолжить идею логгированияи валидации данных (logging warnings - bad UUIDs, malcode in client query)Копирование"quick link" в буфер обмена- Добавить хранение файлов (картинки, архивы, документы)
Заменить ужасныеalert'ы на modal, автозакрытие при копировании ссылки в буфер