Если цель ее, чтобы предотвратить «статические» URL от манипуляций, то вы можете просто зашифровать параметры, или подписать их. Вероятно, «достаточно безопасно», чтобы использовать MD5 параметров URL, а также немного соли. Скажем, соль может быть случайной строкой, хранящейся в сеансе.
Тогда вы можете просто:
http://example.com/service?x=123&y=Bob&sig=ABCD1324
Этот метод предоставляет данные (то есть они могут «видеть», что хуг = 123), но они не могут изменить данные.
Существует преимущество «шифрования» (и я использую этот термин свободно). Здесь вы шифруете весь раздел параметров URL-адреса.
Здесь вы можете сделать что-то вроде:
http://example.com/service?data=ABC1235ABC
Хорошая вещь об использовании шифрования в два раза.
Один из них защищает данные (они никогда не могут видеть, что xyz = 123, например).
Другая особенность Тхо, что это расширяемый:
http://example.com/service?data=ABC1235ABC&newparm=123&otherparm=abc
Здесь вы можете расшифровать оригинальную полезную нагрузку, и делать (SAFE) сливаются с новыми данными.
Таким образом, запросы могут добавлять данные ADD к запросу, просто не изменяя СУЩЕСТВУЮЩИЕ данные.
Вы можете сделать то же самое с помощью техники подписи, вам просто нужно объединить весь запрос в один «blob», и этот blob неявно подписан. Это «эффективно» зашифровано, просто слабое шифрование.
Очевидно, что вы не хотите делать НИКАКИЕ из этого на клиенте. Нет никакого смысла.Если вы можете это сделать, «они» могут это сделать, и вы не можете сказать разницу, так что вы можете вообще не делать этого - если вы не хотите «шифровать» данные по нормальному порту HTTP (vs TLS, но тогда люди будут мудро удивляться «зачем беспокоиться»).
Для Java все эти работы идут в Фильтр, так я сделал это. Задняя часть изолирована от этого.
Если вы хотите, вы можете полностью изолировать заднюю часть от этого с помощью фильтра исходящих сообщений, который обрабатывает шифрование/подпись URL-адреса на выходе.
То же и я сделал.
Недостатком является то, что он очень вовлечен, чтобы понять это правильно и выполнить. Вам нужен легкий анализатор HTML, чтобы вытащить URL-адреса (я написал потоковый парсер, чтобы сделать это на лету, чтобы он не копировал всю страницу в ОЗУ).
Светлая сторона - это все, что касается контента, «просто работает», поскольку они ничего не знают об этом.
Существует также специальная обработка при работе с Javascript (так как ваш фильтр не будет легко «знать», где есть URL для шифрования). Я решил это, требуя, чтобы URL-адреса были подписаны, чтобы быть конкретными «var signedURL =« .... », поэтому я могу легко найти их на выходе. Не так, как вы могли бы подумать, не так сильно бремя для дизайнеров.
Другая яркая сторона фильтра заключается в том, что вы можете отключить его. Если у вас есть какое-то «странное поведение», просто отключите его. Если поведение продолжается, вы обнаружили ошибку, связанную с шифрованием. Это также позволяет разработчикам работать в текстовом виде и оставлять шифрование для тестирования интеграции.
Боль, которую нужно сделать, но в целом все хорошо.
Если вы размещаете из формы, параметры не будут являться частью URL – DwB
, поэтому DWB сказал «пост» –
Как я понимаю, это запутывание, когда данные скрыты из-за сложности (например, ROT13 или XOR операции), шифрование - это когда вы должны знать секрет доступа к данным. –