Thread.Sleep на странице ошибок aspx. Зачем?
В этом сообщении, касающемся эксплойта для дополнения оракула, Microsoft разместила следующую рекомендуемую страницу с ошибкой:
<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Security.Cryptography" %>
<%@ Import Namespace="System.Threading" %>
<script runat="server">
void Page_Load() {
byte[] delay = new byte[1];
RandomNumberGenerator prng = new RNGCryptoServiceProvider();
prng.GetBytes(delay);
Thread.Sleep((int)delay[0]);
IDisposable disposable = prng as IDisposable;
if (disposable != null) { disposable.Dispose(); }
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<div>
An error occurred while processing your request.
</div>
</body>
</html>
Что с Thread.Sleep
для некоторого значения между 0-255? Я не хочу, чтобы потоки моего сервера были связаны до четверти секунды.
1 ответ
Решение
Причина в том, чтобы изменить время получения результата. Сделав так, чтобы возврат занимал переменное количество времени, вы не можете использовать время возврата ошибки, чтобы определить причину сбоя, который является подходом, который используется для атаки