Какой лучший алгоритм для определения местоположения вывода строки в HTML?

0

Я создаю XSS-сканер, теперь хочу узнать местоположение вывода строки.

Возможно,

  • Между тегами HTML, например <h2>string</h2>
  • Атрибут тега, например <h2 class=string></h2>

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

Любое предложение? Запуск perl

string PS тщательно обработана, что не повредит HTML-структуре нигде.

  • 0
    Я не понимаю проблемы. Вы ищете строковую string внутри файла HTML? Почему бы не использовать grep или sed ?
Теги:
html-parsing

1 ответ

0

Я не уверен, понимаю ли я вашу проблему, но вот моя попытка ответить. Этот код проверяет, является ли $string единственной вещью в атрибуте/теге, например <h2>string</h2> а не <h2>hello string</h2>.

print "String '$string' found between HTML tags.\n" if ($file =~ /<(\w+).*?>$string<\/\1>/);
print "String '$string' found in HTML attribute.\n" if ($file =~ /<\w+ (?:.+? )?\w+="$string"(?: .+?)?>/);

Обратите внимание, что в обоих случаях произойдет сбой при print, например, <h2 class=string>string</h2>. Если вам нужно объяснение того, что делают регулярные выражения, прокомментируйте, и я отредактирую свой ответ. Предполагается, что весь файл HTML находится в $file а строка - в $string. Первое может быть достигнуто с чем-то вроде этого:

$FILE = 'C:/path/to/file.html';

open FILE or die "Cannot open $FILE for read: $!";
while (<FILE>) {
   $file .= $_;
}
close FILE;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню