Что ^ подписывает средний в URL?

Каково значение ^, входят в систему URL?

Я должен был проверить некоторые данные ссылки из веб-страницы, и я использовал простой рукописный поисковый робот PHP для них. Поисковый робот обычно хорошо работает; затем я приехал в URL как это:

http://www.example.com/example.asp?x7=3^^^^^select%20col1,col2%20from%20table%20where%20recordid%3E=20^^^^^

Этот URL хорошо работает при вводе в браузере, но мой поисковый робот не может получить эту страницу. Я добираюсь, "Запрос HTTP привел ошибку к сбою".

5
задан Kshitij Saxena -KJ- 24 February 2010 в 20:10
поделиться

5 ответов

Поскольку вызов события означает, что вызывающий абонент не знает о вызываемом абоненте:

  1. Вызов обработчика события должен быть надежным перед лицом произвольных исключений. Все, что нужно стек вызова, чтобы очистить свой собственный беспорядок правильно, в случае, если происходит что-то совершенно неожиданное.

  2. Обработчики событий должны действительно избегать возникновения исключений.

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

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

-121--2149273-

Возможно, обходчик использует регулярные выражения для разбора URL-адреса, и поэтому он перестает работать, так как вставка (^) означает начало строки. Я думаю, что эти URL-адреса действительно плохая практика, поскольку они раскрывают базовую структуру базы данных; кто бы ни написал это, возможно, захочет рассмотреть вопрос о серьезном рефакторинге!

HTH!

-121--4557564-

Символ вставки (^) не является зарезервированным символом в URL-адресах, поэтому он должен быть приемлемым для использования как есть. Однако при возникновении проблем просто замените его шестнадцатеричной кодировкой % 5E .

И да, поместить необработанный SQL в URL-адрес - это как большой мигающий неоновый знак с надписью «EXPLOIT ME PLEASE!».

6
ответ дан 18 December 2019 в 06:22
поделиться

Кроулер может использовать регулярные выражения для разбора URL-адреса и поэтому перестает работать, так как вставка (^) означает начало строки. Я думаю, что эти URL-адреса действительно плохая практика, поскольку они раскрывают базовую структуру базы данных; кто бы ни написал это, возможно, захочет рассмотреть вопрос о серьезном рефакторинге!

HTH!

-121--4557564-

Символ вставки (^) не является зарезервированным символом в URL-адресах, поэтому он должен быть приемлемым для использования как есть. Однако при возникновении проблем просто замените его шестнадцатеричной кодировкой % 5E .

И да, поместить необработанный SQL в URL-адрес - это как большой мигающий неоновый знак с надписью «EXPLOIT ME PLEASE!».

-121--4557560-

^ символы должны быть закодированы, см. RFC 1738 Унифицированные локаторы ресурсов (URL) :

Другие символы небезопасны, поскольку шлюзы и другие транспортные агенты известно, что иногда модифицируют такие персонажи. Эти символы - «{», "}", "|", "\", "^", "~", "[", "]", и «'».

Все небезопасные символы должны всегда кодироваться в URL-адресе

Можно попробовать использовать URL-адрес, кодирующий символ ^ .

8
ответ дан 18 December 2019 в 06:22
поделиться

Каретка не является ни зарезервированной, ни «незарезервированной», что делает ее «небезопасным символом» в URL-адресах. Они никогда не должны появляться в незакодированных URL. Из RFC2396 :

2.2. Reserved Characters

   Many URI include components consisting of or delimited by, certain
   special characters.  These characters are called "reserved", since
   their usage within the URI component is limited to their reserved
   purpose.  If the data for a URI component would conflict with the
   reserved purpose, then the conflicting data must be escaped before
   forming the URI.

      reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
                    "$" | ","

   The "reserved" syntax class above refers to those characters that are
   allowed within a URI, but which may not be allowed within a
   particular component of the generic URI syntax; they are used as
   delimiters of the components described in Section 3.

   Characters in the "reserved" set are not reserved in all contexts.
   The set of characters actually reserved within any given URI
   component is defined by that component. In general, a character is
   reserved if the semantics of the URI changes if the character is
   replaced with its escaped US-ASCII encoding.

2.3. Unreserved Characters

   Data characters that are allowed in a URI but do not have a reserved
   purpose are called unreserved.  These include upper and lower case
   letters, decimal digits, and a limited set of punctuation marks and
   symbols.

      unreserved  = alphanum | mark

      mark        = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"

   Unreserved characters can be escaped without changing the semantics
   of the URI, but this should not be done unless the URI is being used
   in a context that does not allow the unescaped character to appear.

2.4. Escape Sequences

   Data must be escaped if it does not have a representation using an
   unreserved character; this includes data that does not correspond to
   a printable character of the US-ASCII coded character set, or that
   corresponds to any US-ASCII character that is disallowed, as
   explained below.
4
ответ дан 18 December 2019 в 06:22
поделиться

Судя по контексту, я предполагаю, что это доморощенная попытка URL-кодирования кавычек.

7
ответ дан 18 December 2019 в 06:22
поделиться

Возможно, краулер использует регулярные выражения для разбора URL и поэтому падает, потому что корешок (^) означает начало строки. Я думаю, что такие URL - действительно плохая практика, поскольку они раскрывают базовую структуру базы данных; тому, кто это написал, стоит задуматься о серьезном рефакторинге!

HTH!

0
ответ дан 18 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: