У меня есть страница URL что-то вроде этого: https://site.com/page.aspx?QSVariableName=ValueКак удалить исполняемый JavaScript из переменной QueryString?
Наша команда безопасности повысила уязвимость о том, что если часть Значение вводится с исполняемым JS, то есть что-то вроде:
https://site.com/page.aspx?QSVariableName=Value%27%2balert%281234567890%29%2b%27 (эквивалентно переходу Значение '+ предупреждение (1234567890) +)
Тогда предупреждается от события OnClick гиперссылки я имею на странице, которая использует значение.
Как я уже сказал, это не то, что я делаю намеренно, но идентифицируется как уязвимость в коде. Итак, вопрос в том, как я могу убедиться, что QSVariableName использует только значение и игнорирует ненужный код (позволяет сохранить JS только сейчас)?
Сложность, которая приходит мне на ум, это QSVariableName может содержать ЛЮБОЙ код JS, а не только alert(). И он может присутствовать где угодно, а не только в конце. Есть ли способ идентифицировать исполняемый код JS, встроенный в строку?
Это нормально, если значение является плохой «строкой», если оно не содержит ничего исполняемого.
Можем ли мы увидеть код, в котором вы читаете и использовать 'QSVariableName' в сценарии? Это может помочь нам увидеть, как ваш код читает и выполняет JS непосредственно из строки запроса. – citizenslave
Как вы используете asp.net, вы должны прочитать о [Как предотвратить XSS (Cross Site Scripting)] (http://msdn.microsoft.com/en-us/library/ff649310.aspx) –
Citizenslave, I не может делиться точным кодом ... но вот идея. В URL-адресе есть QSVariableName = Value. Существует гиперссылка на странице, чье событие OnClick настроено на вызов функции JS, передав значение «Значение» в качестве одного из параметров. В моем отредактированном описании 1234567890 предупреждается даже до того, как вызывается первая строка функции JS, главным образом потому, что само значение параметра содержит исполняемый JS. Поэтому мне нужно выяснить способ отсечения этого ненужного кода даже до вызова события OnClick. Поэтому метод C#, который идентифицирует действительный JS в строковой переменной, - это то, что я ищу. – Kal