Модуль сжатия HTTP, который может экранировать встроенные скрипты - PullRequest
0 голосов
/ 27 марта 2009

У меня есть модуль HTTP, который сжимает HTTP-запрос.

public override void Write(byte[] buffer, int offset, int count)
{
    byte[] data = new byte[count];
    Buffer.BlockCopy(buffer, offset, data, 0, count);
    string html = System.Text.Encoding.Default.GetString(buffer);

    Regex reg = new Regex(@"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}");
    html = reg.Replace(html, string.Empty);

    byte[] outdata = System.Text.Encoding.Default.GetBytes(html);
    _sink.Write(outdata, 0, outdata.GetLength(0));
}

Как мне избежать всех встроенных скриптов? Это мои сценарии регулярного выражения.

Regex reg = new Regex("<script[^>]*?>[\\w|\\t|\\r|\\W]*?</script>", (RegexOptions.Singleline | RegexOptions.IgnoreCase));

1 Ответ

1 голос
/ 27 марта 2009

Я действительно сомневаюсь, что вы хотите использовать Encoding.Default, который специфичен для вашей системы. Кроме того, почему бы не использовать более стандартный способ сжатия, а именно gzip двоичных данных вместо манипулирования текстом? Я подозреваю, что это окажет большее влияние, и не так хрупко с точки зрения случайного взлома HTML. Кроме того, вам больше не нужно беспокоиться о кодировке.

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