защита URL службы внутри файла js - PullRequest
0 голосов
/ 23 августа 2011

У меня есть сервис-ориентированное приложение, в котором из javascript вызывается множество wcf-сервисов. Есть ли способ, которым я могу зашифровать или сделать что-нибудь относительно URL-адреса сервиса внутри js-файла? Я имею в виду, что кто-то может взять URL и сделать миллионы запросов на обслуживание и отключить сервер.

Ответы [ 2 ]

2 голосов
/ 23 августа 2011

В какой-то момент URL-адрес должен быть декодирован по той простой причине, что он должен использоваться один или другой раз.

Если у вас включен отладчик (chrome или firebug), вы можетепросто следуйте тому, что делается с помощью ajax, и просто щелкните по URL, чтобы сделать это снова!

Вы можете «зашифровать» js, минимизировав его, и протолкнув, настраивая / записывая свой собственный минифер / упаковщик.

Лучший способ обезопасить себя - это проверить вызов на бэкэнде (на вашем сервере).

Если вы хотите сделать это очень сильно, вы можете зашифровать часть URL после вашего сервера и использоватьначальное число как subdir (www.your.server / sha1EncodedSubUrl? prm = 1 и т. д. = больше) для каждого вызова.

Затем вы должны убедиться, что ваш сервер способен декодировать URL-адрес, и связать / декодировать закодированную часть с файлом сервера, который будет отвечать.

Затем вы можете указать время жизнина закодированный URL, или связать его с сеансом.Могут быть некоторые модули / плагины для серверов, которые делают именно это, например моды "удобные / красивые URL", но я их не знаю.

В качестве альтернативы вы можете отправить семя как passthrou (ajax отправляет его обратнов качестве параметра).например, www.yourserver.com/yourAjaxResponseFile.phpjswcf?prm=1&etc=moar&seed=H48KKSJ17JU

1 голос
/ 23 августа 2011

Браузер должен быть в состоянии прочитать URL, чтобы сделать звонок;это означает, что в какой-то момент он будет доступен в виде открытого текста и, следовательно, доступен злоумышленнику в виде открытого текста.

Здесь необходимо отметить две вещи:

Во-первых, НИКОГДА не должно быть никакой конфиденциальной информации в коде javascript.Это означает, что пароли, ключи шифрования или любая информация, которую можно удаленно использовать для выполнения действий, которые пользователь не имеет права делать.Минификация / упаковка только затрудняет чтение кода, но не остановит решительного злоумышленника.Вся аутентификация и безопасность должны выполняться на стороне сервера, то есть на стороне, которой вы можете управлять.

Во-вторых, если безопасность вашего сервиса зависит от неизвестного URL-адреса, у вас нет защитына все .Вы можете использовать WCF throttling , чтобы попытаться предотвратить атаки DOS.Брандмауэр должен также помочь остановить такого рода атаки, отбрасывая пакеты еще до того, как они достигнут службы.

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