Рекомендации по "разделяемой" безопасности URL - PullRequest
3 голосов
/ 09 декабря 2010

Я планирую веб-приложение, которое позволит пользователям создавать ресурсы без входа. Я планирую использовать стиль безопасности Google Docs / Pastebin, создавая уникальные трудно угадываемые URL-адреса. (например, example.com/ytasdfweoirue/)

На что стоит обратить внимание? Какие рекомендации вы бы использовали при разработке генератора токенов? Какие вещи я должен рассмотреть? Есть ли лучший набор символов на выбор?

Моим бэкэндом, вероятно, будет CouchDB, но меня интересуют независимость от платформы, общие рекомендации и проблемы, которые могут возникнуть на любой платформе.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2011

Использовать PRNG

Вы должны генерировать случайный URL с PRNG , а не с самой простой функцией Random () вашей платформы.( К вашему сведению. Теоретически .NET GUID не предназначен для обеспечения безопасности, на практике в веб-приложении с вами все будет в порядке, но вас предупредили )

Не включайте 3-йсторонние ресурсы на «скрытой» странице

Убедитесь, что посещаемые посетителями страницы не содержат никаких сторонних ресурсов (javascripts, изображений, flash-анимации и т. д.). В значительной степени все они будут пропускать текущийURL через REFERRER и ваш скрытый URL будет открыт для всех этих третьих лиц.Это то же самое, даже если вы используете HTTPS и включенные URL-адреса используют HTTP.

Не включайте ссылки на сторонние веб-сайты, если вам нужно позаботиться о рекомендателях

Опять утечка REFERRER может быть проблемой, если страница, которую вы обслуживаете, содержит ссылки на сторонние URL-адреса.В этом случае вы можете либо перенаправить их с общей страницы (если вы будете осторожны с уязвимостями Open Redirect ), либо использовать трюк JavaScript для удаления REFERRER.

0 голосов
/ 19 ноября 2011

Вы не упоминаете свой технологический стек, но лучший вариант здесь звучит как Guid.Просто укажите ваш URL:

http://whatever.com/resource/{guid}

Направляющие достаточно длинные, чтобы их было трудно / невозможно угадать или перечислить, и у вас есть довольно сильная гарантия того, что вы не создадите двух направляющих, которыетот же самый.Пока вы не в javascript, ваш язык должен иметь генератор guid, доступный как встроенный (.net) или библиотека.

Вот страница википедии для дальнейшего обсуждения: http://en.wikipedia.org/wiki/Globally_unique_identifier

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...