Что означает знак ^ в URL? - PullRequest
5 голосов
/ 24 февраля 2010

Что означает знак ^ в URL?

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

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

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

Ответы [ 5 ]

8 голосов
/ 24 февраля 2010

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

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

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

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

7 голосов
/ 24 февраля 2010

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

6 голосов
/ 24 февраля 2010

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

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

4 голосов
/ 24 февраля 2010

Каретка не является ни зарезервированной, ни "незарезервированной", что делает ее "небезопасным символом" в 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.
0 голосов
/ 24 февраля 2010

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

НТН!

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