В чем разница между pre ($ ENV {'QUERY_STRING}) и ($ cgi-> param ())?
-
24-09-2019 - |
Вопрос
в чем разница (технически) между этими двумя сценариями perl cgi?
родовое словои
родовое словоРешение
Предположим, что HTTP-запрос выглядит следующим образом:
родовое слово При запуске на веб-сервере с обычным интерфейсом CGI переменная среды QUERY_STRING будет иметь значение foo=bar&baz=buz
.URL-адрес переменной среды не будет отключен.Печать его с помощью $cgi->pre(...)
просто заключит переменную env в теги <pre></pre>
(или один тег <pre />
, если значение равно или приведено к пустой строке.
$cgi->param()
, с другой стороны, и при условии, что контекст списка без аргументов, вернет список безэкранированных URL имен параметров CGI, в данном случае foo
иbar
.
(Обратите внимание, что $cgi->pre(...)
не HTML-экранирования своего аргумента, поэтому $ENV{QUERY_STRING}
может просто поставить под угрозу ваш cgi небольшой инъекцией межсайтового скриптинга.)
Другие советы
Метод param
объекта CGI возвращает список всех параметров запроса, включая параметры GET и POST.Если вы не передаете аргумент, в этом случае он ищет параметр с таким именем и возвращает значение.
Переменная среды QUERY_STRING
содержит неанализируемую строку запроса.
Это было бы довольно очевидно, если бы вы попробовали рассматриваемый код.
Вот документация для создания кодового кода.