Безопасен ли этот тип проверки хеширования? - PullRequest
1 голос
/ 05 сентября 2010

Вопрос, который я собираюсь задать, просто потому, что мне любопытно. Я думаю, что поступаю правильно, но я хочу убедиться, что на самом деле является правильной вещью. Речь идет о хешировании.

Сайт, который я сейчас создаю, содержит несколько компонентов Ajax-ed. Прежде всего, пользователи, которые не вошли в систему, не могут использовать эти компоненты. Во-вторых, вошедшие в систему пользователи могут выполнять свои запросы только от своего имени. Это довольно легко подделать, потому что я отправляю идентификатор пользователя.

Мой метод проверки заключается в следующем. У каждого пользователя есть столбец в базе данных, который содержит случайную информацию, например, 8-символьную случайную строку. Наряду с каждым Ajax-запросом, который делает пользователь, эта случайная строка отправляется как хешированная строка. Когда сервер получает запрос Ajax, этот хеш сопоставляется с пользовательской таблицей, чтобы удостовериться, что идентификатор и хеш являются допустимой парой. Если это так, запрос действителен.

«Секретная» случайная строка никогда не попадает в область пользователя, и ее нелегко угадать, что означает, что хеш никогда не может быть создан пользователем. Безопасен ли этот вид запроса? Есть ли недостатки? И было бы лучше, если бы я использовал немного соли?

Кстати, этот вид проверки меня действительно интересует. Я прошел курс по дизайну взаимодействия. «У нас» есть принцип «знания в мире и знания в голове». Хеширование действительно использует эту технику для передачи метаданных из «головы» в «мир» (и наоборот). И голова, и мир имеют свои методы сравнения и дешифрования метаданных, что делает невозможным выдавать себя за запрос. Пока мир не знает, что знает голова.

Что ж, я хотел бы знать, безопасны ли мои запросы (относительно). Заранее спасибо!

Reinder

1 Ответ

0 голосов
/ 15 ноября 2010

Да, с учетом нескольких оговорок.

1) Если хеш-код отправляется в открытом виде, он может быть подделан.Злоумышленник, перехватывающий хеш, теперь может выдать себя за действительного пользователя.Для истинной безопасности вам необходимо защитить канал (HTTPS).

2) Убедитесь, что вы используете существующий криптографически безопасный хеш.Не пытайтесь свернуть свое собственное.Я бы порекомендовал держаться подальше от MD5.Учитывая, что это ситуация с нуля и существуют реализации SHA1, мало оснований для использования MD5.

...