2009-03-16 3 views
1

Каков наилучший способ предотвратить javascript-инъекции в веб-приложении VB.NET? Есть ли способ отключить javascript в событии pageload?Предотвращение инъекций JavaScript

В последнее время частью плана безопасности нашего продукта vb.net было просто отключить кнопки на странице, которые не были доступны конкретному пользователю. Тем не менее, я проинформировал парня, который думает о том, что набрав

javascript:alert(document.getElementById("Button1").disabled="")

в адресной строке будет повторно активировать кнопку. Я уверен, что кто-то еще сталкивался с такими проблемами раньше, поэтому любая помощь приветствуется. Благодаря!

Обновление: Помимо подтверждения ввода пользователя, как я могу защитить веб-сайт от игры из адресной строки?

Спасибо за ввод! Я ценю это!

ответ

12

Любые изменения, которые вы вносите в поведение приложения на стороне клиента, являются поверхностными и не защищены вообще. Вы не должны полагаться на них. Они хороши, чтобы остановить 99% пользователей, но их легко обойти. Вы должны проверить, имеет ли пользователь права на действие на стороне сервера при вызове действия, так что, если кто-то решил снова включить кнопку, они не смогут делать то, что кнопка предназначена для делать. У вас нет контроля над тем, что кто-то может сделать на странице с помощью javascript, поэтому вы никогда не должны доверять чему-либо, исходящему от клиента.

Ответ на обновление: Вы не можете практично, и это именно то, что проблема. Как только веб-сайт находится в своем браузере, он является бесплатным для всех, и они могут пойти на него. Именно поэтому ваша программа должна проверять все серверные стороны каждый раз.

+0

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

+0

Все, что работает на стороне клиента, не доверено - даже если предположить, что браузеру можно как-то сказать не запускать javascript (он не может, и есть javascript: urls, firebug, web inspector и т. Д.), Вы даже не можете быть уверены это настоящий браузер на другом конце; удаленные запросы не могут доверять, когда-либо. – olliej

7

Самый важный элемент для рассмотрения - html кодирование ввода пользователя. Если пользователь вводит сценарий < >, он преобразуется в & lt; script & gt; и т. д.

Обновление: Если вы ожидаете ввода от url/querystring, подтвердите данные с помощью крайних мер. Если возможно, белый список данных. Когда вы указали белый цвет, вы обеспечиваете только то, что считаете правильным и безопасным, - это жизнеспособное представление.

Не доверяйте входам пользователей.

2

Всегда проверяйте ввод пользователя.

2

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

1

Не имеет значения, что вы делаете, чтобы заблокировать интерфейс через javascript, ваши данные всегда можно каким-либо образом манипулировать. Существуют различные инструменты, такие как fiddler, которые могут быть использованы для изменения или воссоздания обратных передач/запросов.

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

Смежные вопросы