Как задержать ответ в Классике ASP

У меня есть сайт, выполняющий классический ASP, и на странице входа в систему я хотел бы задержать ответ на неудавшуюся попытку входа в систему (на подобные 10 секунд), чтобы помочь предотвратить атаки перебором учетных записей.

Быстрые поиски Google показывают некоторые взломы с помощью запросов SQL-сервера, которые кажутся взломом-tastic.

Существует ли хороший способ сделать это у классического asp?

7
задан Bert Lamb 10 February 2010 в 14:18
поделиться

6 ответов

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

Например:

  1. Почему бы не заблокировать определенную сессию или IP-адрес после, скажем, 5 (здесь я щедр) неудачных попыток входа? Вы можете заблокировать его, скажем, на 10 минут. Можно даже написать HTTP-статус "401 Unauthorized", а затем просто завершить ответ командой Response.End.
  2. Аналогичным образом, но даже не связанным с неудачными входами, вы можете блокировать запросы к странице входа более X раз за Y секунд для определенного IP, UserAgent и других характеристик клиента - обеспечивая своего рода "уникальность" клиента.
  3. Игнорировать IP-адрес (он легко подделывается и может быть IP-адресом прокси-сервера), а просто определять автоматизацию попытки входа. X количество неудачных входов в течение Y секунд для определенного имени пользователя/адреса электронной почты, заблокировать его для этого имени пользователя на заданный период времени и прекратить ответ.

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

Очевидно, что предпочтительным вариантом было бы сделать это на аппаратном уровне - брандмауэры и т.д.

8
ответ дан 6 December 2019 в 14:04
поделиться

Обычной практикой является включение элемента 'Unknown' со значением 0 в перечисление. Вы можете сделать это и использовать его для Нового государства, если вы действительно хотите.

Но вы описываете бизнес-логику... задание состояния после создания нового объекта должно происходить на уровне бизнес-логики, а не внутри самого класса.

-121--2809807-

Невозможно преобразовать конфигурации XML с пользовательскими пространствами имен (например, http://www.springframework.org/schema/security ). Однако конфигурации XML можно смешивать с конфигурациями на основе Java с помощью метода @ ImportResource

-121--4012967-

Существует метод WScript.Sleep для VASEcript общего назначения, однако это не будет работать в контексте ASP.

Существует ряд других механизмов, которые можно использовать для достижения этой цели, однако все они являются эффективными «обходными путями», так как нет встроенных средств, которые могли бы привести к тому, что бы страница ASP (запущенная VASEcript) приостановилась.

Смотрите здесь:

Как сделать паузу на странице ASP или «сон»?

Чтобы конкретно ответить на ваш вопрос:

Есть ли хороший способ сделать это в classic asp?

No. Нет хорошего способа сделать это, и есть только «hack-tastic» взломы, которые можно использовать, однако они приносят с собой всевозможные побочные эффекты и предостережения. (Смотрите последнюю часть ссылки «Как сделать мою страницу ASP паузой или» спать «?» для конкретного приема пищи в память, страницы с неприятным побочным эффектом.)

4
ответ дан 6 December 2019 в 14:04
поделиться

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

Sub DelayResponse(numberOfseconds)
 Dim WshShell
 Set WshShell=Server.CreateObject("WScript.Shell")
 WshShell.Run "waitfor /T " & numberOfSecond & "SignalThatWontHappen", , True
End Sub
4
ответ дан 6 December 2019 в 14:04
поделиться

Проверьте параметры EGL_SAMPLE_BUFFERS и EGL_SAMPLES на egLooserConfig () , а также glEnable (GL_MULTISAMPLE) .

EDIT: Hrm, очевидно вам не повезло, по крайней мере, насколько стандартизированные подходы. Как упомянуто в этом потоке, можно выполнить визуализацию на большой внеэкранной текстуре и масштабировать на меньшую экранную четверку или несколько раз разбить матрицу вида.

-121--4631713-

D2 (шаблоны): 195 197 199 + 17 символов

template F(alias s,int c,int i){static if(s>"")enum F=F!(s[1..$],c,i-(s[0]==c));else enum F=i?s:s~c;}template M(alias s,alias t=s){static if(s>"")enum M=F!(t,s[0],1)~M!(s[1..$],t);else enum M=s;}

Расширенный:

template F(alias s,int c,int i){
    static if(s>"")
        enum F=F!(s[1..$],c,i-(s[0]==c));
    else
        enum F=i?s:s~c;
}
template M(alias s,alias t=s){
    static if(s>"")
        enum M=F!(t,s[0],1)~M!(s[1..$],t);
    else
        enum M=s;
}

pragma(msg,M!"nbHHkRvrXbvkn");
-121--2090854-

Нет простого способа сделать это в чистом ASP.
SQL WAITFOR или создайте простой компонент ActiveX в VB (или что-либо еще), который находится в состоянии ожидания.
Обратите внимание, что это увеличит нагрузку на сервер. В спящих запросах память и подключения сохраняются просто так.

1
ответ дан 6 December 2019 в 14:04
поделиться

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

This is how Google does it

1
ответ дан 6 December 2019 в 14:04
поделиться

Есть параметр Response.Buffer, который вы можете использовать, чтобы сообщить ему отложить возврат ответа до тех пор, пока страница не завершит обработку, так что вы, возможно, могли бы объединить это с каким-то тайм-аутом в скрипте, но это не было бы особенно элегантно, тем более что VBScript на самом деле не предлагает вам способ попросить потоки спать, поэтому вы можете в конечном итоге перегрузить процессор.

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

0
ответ дан 6 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: