Я хочу расширить этот вопрос: Obfuscating POST-переменные между Javascript и PHP
Где я придумал это решение: http://pastebin.com/YuAAZTLi
Он работает в 95% случаев, но 5%, с которыми я не могу справиться. Трудно по-настоящему основать его во время двух разных серверов. И отправить гниль с переменными просто слишком легко взломать.
Мне нужно что-то, что изменилось каждый раз, надеюсь, потому что я не хочу, чтобы HTTP POST-запросы просто дублировались. Какие методы шифрования существуют взаимозаменяемо между javascript и PHP, которые допускают шифрование типа md5. где
4500 выглядит что-то вроде Dusfh7sfSFJf78dfns8 и 4501 что-то вроде JF7Fhene7fdHfdshf6d .. ничего похожего, даже если они имеют 1 цифру.
Внешняя библиотека разрешена, но, пожалуйста, убедитесь, что вы связываете как php, так и javascript.
Это несколько специфично для случая обращения с логином пользователя, но я предложил протокол в этом ответе , и его попросили, и он закодировал версию входа в систему для PHP-to-JavaScript с поддержкой HTTP-сниффер.
Суть схемы:
- Создать случайное значение nonce; это помогает предотвратить повторные атаки.
- Отправьте это значение nonce и соль для пароля в браузер вместе с остальной формой входа.
- Вы храните пароли в соленой и хешированной форме?
- Когда пользователь вводит пароль, вместо этого сценарий в форме вычисляет и отправляет обратно хэш (хэш (пароль, соль), nonce).
- Когда сервер получает представление формы, попросите его вычислить хеш (storedSaltedPassword, nonce) и убедитесь, что он равен представленному значению.
- Сохраните значение nonce на сервере; не доверяйте клиенту повторять его вам, или ваша защита воспроизведения не исчезла.
Слабостью этой схемы является то, что хэши паролей в базе данных в некотором смысле эквивалентны паролю; в то время как, вероятно, невозможно извлечь исходный пароль, используемый для создания этих хэшей, знание сохраненного хеша достаточно для олицетворения пользователя на вашем сайте.
Просто используйте SSL. Это обычно поддерживается практически всем, и проблемы безопасности уже давно разработаны. Настройка немного сложна, но есть тонны информации о том, как это сделать; даже сертификаты не так дороги.