У меня есть сайт, выполняющий классический ASP, и на странице входа в систему я хотел бы задержать ответ на неудавшуюся попытку входа в систему (на подобные 10 секунд), чтобы помочь предотвратить атаки перебором учетных записей.
Быстрые поиски Google показывают некоторые взломы с помощью запросов SQL-сервера, которые кажутся взломом-tastic.
Существует ли хороший способ сделать это у классического asp?
Я не собираюсь отвечать на ваш конкретный вопрос, поскольку многие уже сделали это, но есть гораздо лучшие способы предотвращения атак грубой силы.
Например:
Response.End
. Просто хочу сказать, что есть и другие варианты, чем создавать ненужную нагрузку на ваш сервер, блокируя некоторые ресурсы и ожидая.
Очевидно, что предпочтительным вариантом было бы сделать это на аппаратном уровне - брандмауэры и т.д.
Обычной практикой является включение элемента 'Unknown' со значением 0 в перечисление. Вы можете сделать это и использовать его для Нового государства, если вы действительно хотите.
Но вы описываете бизнес-логику... задание состояния после создания нового объекта должно происходить на уровне бизнес-логики, а не внутри самого класса.
-121--2809807- Невозможно преобразовать конфигурации XML с пользовательскими пространствами имен (например, http://www.springframework.org/schema/security
). Однако конфигурации XML можно смешивать с конфигурациями на основе Java с помощью метода @ ImportResource
Существует метод WScript.Sleep для VASEcript общего назначения, однако это не будет работать в контексте ASP.
Существует ряд других механизмов, которые можно использовать для достижения этой цели, однако все они являются эффективными «обходными путями», так как нет встроенных средств, которые могли бы привести к тому, что бы страница ASP (запущенная VASEcript) приостановилась.
Смотрите здесь:
Как сделать паузу на странице ASP или «сон»?
Чтобы конкретно ответить на ваш вопрос:
Есть ли хороший способ сделать это в classic asp?
No. Нет хорошего способа сделать это, и есть только «hack-tastic» взломы, которые можно использовать, однако они приносят с собой всевозможные побочные эффекты и предостережения. (Смотрите последнюю часть ссылки «Как сделать мою страницу ASP паузой или» спать «?» для конкретного приема пищи в память, страницы с неприятным побочным эффектом.)
Существует и другой подход, но следует помнить о вышеупомянутых предостережениях в отношении необязательно потребляемых ресурсов. Вот подход, хотя
Sub DelayResponse(numberOfseconds)
Dim WshShell
Set WshShell=Server.CreateObject("WScript.Shell")
WshShell.Run "waitfor /T " & numberOfSecond & "SignalThatWontHappen", , True
End Sub
Проверьте параметры EGL_SAMPLE_BUFFERS и EGL_SAMPLES на egLooserConfig () , а также glEnable (GL_MULTISAMPLE) .
EDIT: Hrm, очевидно вам не повезло, по крайней мере, насколько стандартизированные подходы. Как упомянуто в этом потоке, можно выполнить визуализацию на большой внеэкранной текстуре и масштабировать на меньшую экранную четверку или несколько раз разбить матрицу вида.
-121--4631713-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 (или что-либо еще), который находится в состоянии ожидания.
Обратите внимание, что это увеличит нагрузку на сервер. В спящих запросах память и подключения сохраняются просто так.
Другой подход, позволяющий избежать атак грубой силы без использования ограничений IP, состоит в том, чтобы предложить капчу после второй неудачной попытки для того же пользователя. Так поступает Google.
Есть параметр Response.Buffer, который вы можете использовать, чтобы сообщить ему отложить возврат ответа до тех пор, пока страница не завершит обработку, так что вы, возможно, могли бы объединить это с каким-то тайм-аутом в скрипте, но это не было бы особенно элегантно, тем более что VBScript на самом деле не предлагает вам способ попросить потоки спать, поэтому вы можете в конечном итоге перегрузить процессор.
Возможно, лучше использовать сеанс на стороне сервера и javascript на клиенте, чтобы клиент задерживал запрос, а сервер отправлял ответ только после того, как ожидаемая задержка закончилась. Это должно обеспечить некоторые меры безопасности на стороне сервера и быть полезным для пользователей, которые не пытаются возиться с вашей системой ...