snaver
  • 0
Новичок

Шифрование сообщений WordPress

  • 0

Я пытался создать полностью частный блог WordPress и нашел полезные блоги/учебники по пути, которые помогли, такие как довольно подробное пошаговое руководство Дэвида Хьюсона.

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

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

У меня есть довольно обширные знания PHP/MySQL, хотя и не в стиле WordPress API и т.д.

Share
  1. Насколько я знаю, то, что вы просите, на самом деле невозможно только с WordPress (или любым простым PHP-приложением). Это та же дилемма, что и с учетными данными базы данных в WP: если FTP взломан, хакер получает логин/пароль базы данных из wp-config.php . Их невозможно защитить, потому что они нужны WordPress (или любому другому PHP-приложению) для доступа к базе данных. Даже если они хранятся в зашифрованном виде, в какой-то момент их необходимо будет расшифровать.

    То же самое и с сообщениями — даже если зашифрованные сообщения хранятся в базе данных, в какой-то момент WordPress потребуется их расшифровать. Если WordPress может их расшифровать, то сможет и человек, взломавший аккаунт.

    Вы, вероятно, можете как-то отделить ключи от установки WordPress, но это просто перемещение проблемы — теперь все еще нужно думать о защите ключей от взлома / утечки, просто они находятся в другом месте.

    • 0
    • Но, конечно, подумайте об этом, так как если бы вы защищали паролем каждое сообщение, вам нужно было бы предоставить закрытый ключ для расшифровки данных. Из моих ограниченных знаний о шифровании закрытых ключей/открытых ключей потенциальный злоумышленник будет иметь доступ только к открытым ключам на сервере, а не к закрытому ключу, которым вы владеете, и поэтому он не сможет расшифровать данные.

      • 0
    • Ага. См. последнюю часть моего ответа — либо вы храните ключи вместе с WordPress, и они уязвимы, либо отсутствуют, и это немного другая ситуация. Если вы имеете в виду конкретную схему, было бы проще ответить об API и тому подобном, в целом это вопрос безопасности, который лучше всего адресован экспертам в этом, а не WP.

      • 0
    • Предполагая, что зашифрованные сообщения могут быть прочитаны только зарегистрированным пользователем, который также вошел в систему на сайте, не могли бы вы позволить пользователю хранить свой закрытый ключ как часть профиля пользователя, зашифрованного паролем его учетной записи? При входе указывается пароль. Он сверяется с хешированным паролем, хранящимся в базе данных. Если он действителен, используйте его также для расшифровки закрытого ключа пользователя. Просто теория, но мне кажется, что это работает. Если кто-нибудь напишет такой плагин, я хотел бы знать, так как я искал то же самое, когда нашел этот пост.

      • 0
    • @ jxpx777, это интересная идея, не лишенная проблем — в первую очередь, где отслеживать незашифрованный ключ во время сеанса…

      • 0
    • Похоже, что совмещение того, что WordPress уже делает с помощью файлов cookie, — это один из подходов: codex.wordpress.org/WordPress_Cookies. Там хранятся ваши учетные данные для входа. Можно сделать то же самое для закрытого ключа.

      • 0
    • Кодировка base64 также не является шифрованием и не предназначена для этого. Это тривиально обратимое кодирование и не добавляет безопасности.

      • 0
  2. Итак, вам нужна система, которая шифрует текст до того, как он попадет в базу данных, и расшифровывает его до того, как он покинет базу данных. Если вы не хотите сохранять пароль на сервере, вам нужно найти способ предоставлять его через браузер каждый раз, когда вы делаете запрос, требующий зашифрованных данных.

    Вы можете сделать это на PHP, но, возможно, и на JavaScript. Если мы упростим вопрос, требуя только шифрования содержимого поста, а не других данных (название, даты и т. д.), вы, вероятно, могли бы подключить свой код к событию TinyMCE на стороне администратора, которое запрашивает ваш пароль (или запоминает в локальном хранилище или другом безопасном месте, которое не покидает ваш компьютер), расшифровывает текст до того, как он будет показан в редакторе, и повторно шифрует его при сохранении. Таким образом, все, что видит WordPress, — это зашифрованный текст. (Возможно, вам нужно отключить все виды фильтров контента, чтобы ничего не изменилось на стороне сервера.)

    На публичной стороне вашего блога вы можете сделать то же самое: отправить блок зашифрованных данных клиенту и расшифровать его с помощью JavaScript.

    Эта схема работает, если вы единственный, кто читает и пишет, иначе вам понадобится способ совместного использования шифрования, но пусть у всех будут разные пароли и тому подобное. Но если вы действительно находитесь в однопользовательском сценарии, уверены ли вы, что WordPress — лучшая среда для вашей работы? Может быть, Evernote или другое решение для создания заметок с поддержкой шифрования будет работать лучше?

    • 0
  3. Могу ли я предложить взглянуть на этот сайт. Я новичок в WordPress и еще не настроил свой собственный блог WordPress. Однако, исследуя возможность создания собственного блога, я тоже хотел иметь возможность шифровать определенные сообщения в блоге.

    После поиска в Google я наткнулся на этот сайт http://www.vincentcheung.ca/jsencryption/.

    В основном сообщения в блоге шифруются с использованием JavaScript и PHP. По умолчанию сообщения шифруются 128-битным AES, но перекомпилировав PHP, вы можете добавить поддержку 256-битного AES. Я еще не начал создавать свой собственный блог WordPress, потому что хочу посмотреть, есть ли способ каким-то образом интегрировать идею Винсента в WordPress.

    Создав плагин на основе работы Винсента, сообщения можно было шифровать в WordPress без необходимости посещать его сайт, шифровать сообщение и затем вставлять полученный текст/код в сообщение WordPress.

    Когда сообщения расшифровываются, все происходит на стороне клиента. Пароль или ключ дешифрования никогда не отправляются на сервер, вся расшифровка происходит на стороне клиента через JavaScript. Это означает, что даже если хакер завладеет вашей базой данных, он не сможет прочитать зашифрованные сообщения, потому что ключ не хранится в базе данных!

    Хотя я хорошо разбираюсь в PHP, я еще недостаточно знаю, как писать хорошие плагины для WordPress, чтобы сделать плагин самостоятельно, но…

    • 0
  4. Точно; все может быть расшифровано групповым открытым ключом, возможно, с несколькими закрытыми ключами, которые хранятся на стороне клиента.

    Поскольку блог, естественно, является частным, технически нет необходимости хранить закрытые ключи на центральном сервере, который хранит только зашифрованные данные.

    • 0
  5. Не на 100%, но это добавит один уровень безопасности: вы можете написать плагин, который использует base64_encode для шифрования определенных записей, а затем к кодировке добавить соль, сделанную из хэша md5 имени пользователя (поскольку они не могут быть изменены ), или что-то в этом роде. base64_decode работает очень быстро, и пользователь, вероятно, не заметит никакой задержки.

    • 0

Оставить ответ

You must login to add an answer.