CAT.NET: уязвимость или ложное срабатывание? - PullRequest
0 голосов
/ 05 января 2011

2-й случайный ряд: Вот первый

Верно ли, что CAT.NET является настоящей уязвимостью в ASP.NET или ложным срабатыванием?

var myInt = Int32.Parse(txtUserInput.Text);

Response.Redirect(string.Format("myPage.aspx?myId={0}", myInt);

CAT.NET сообщает об этом как об уязвимости перенаправления, требующей исправления через кодировку myInt.

Ответы [ 3 ]

1 голос
/ 05 января 2011

Я бы не назвал это опасным, но это не то, как я сам написал бы это

int myInt;
if(Int32.TryParse(txtUserInput.Text,out myInt)){
    Response.Redirect(string.Format("myPage.aspx?myId={0}", myInt);
   }

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

Любой код обработки ошибок может быть связан с оператором else в конце.

1 голос
/ 05 января 2011

Я не верю, это может вызвать исключение, поэтому TryParse может быть лучшим подходом. Это просто крик, потому что вы берете пользовательский ввод и перенаправляете на его основе. Возможно, он слишком агрессивен, что не так уж и плохо.

0 голосов
/ 05 января 2011

В результате использования этого кода нет уязвимости, которую можно использовать. Любая уязвимость может быть результатом того, что myPage.aspx делает со значением myId, а не тем, как построен ваш URL. Любой желающий может так же легко напрямую нажать myPage.aspx, используя все что угодно в строке запроса.

Однако это плохая практика, если предположить, что вы ничего не пропустили из кода между этими двумя строками. Вы должны убедиться, что txtUserInput.Text содержит только числовые символы и соответствует допустимым значениям.

Эксплойты происходят из-за неправильного анализа предоставленных пользователем данных страницей, на которой они размещены, а не из-за неправильного создания URL-адресов. Хотя стоит попытаться убедиться, что ваш веб-сайт не будет писать неработающий URL из-за того, что помещено в форму, проверка входных данных во внешнем интерфейсе не имеет отношения к безопасности. Все, что имеет значение, - это то, что код, который принимает , делает с ним ввод, поскольку любой пост или строка запроса могут быть подделаны.

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