Urlencode — различия между версиями
Материал из InformationSecurity WIKI
Drakylar (обсуждение | вклад) (Новая страница: « ==Чем выделяется== Могут кодироваться как все символы, так и избранные. Если не все симв…») |
Drakylar (обсуждение | вклад) м |
||
| Строка 17: | Строка 17: | ||
==Скрипты== | ==Скрипты== | ||
| + | |||
| + | ===python=== | ||
| + | |||
| + | ====encode==== | ||
| + | <syntaxhighlight lang="python" line> | ||
| + | import urllib | ||
| + | urllib.quote_plus('string_of_characters_like_these:$#@=?%^Q^$') | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ====decode==== | ||
| + | <syntaxhighlight lang="python" line> | ||
| + | import urllib | ||
| + | urllib.unquote_plus('erythrocyte+membrane+protein+1%2C+PfEMP1+%28VAR%29') | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | ===perl=== | ||
| + | ====encode==== | ||
| + | <syntaxhighlight lang="perl" line> | ||
| + | sub urlencode { | ||
| + | my $s = shift; | ||
| + | $s =~ s/ /+/g; | ||
| + | $s =~ s/([^A-Za-z0-9\+-])/sprintf("%%%02X", ord($1))/seg; | ||
| + | return $s; | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ====decode==== | ||
| + | <syntaxhighlight lang="perl" line> | ||
| + | sub urldecode { | ||
| + | my $s = shift; | ||
| + | $s =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg; | ||
| + | $s =~ s/\+/ /g; | ||
| + | return $s; | ||
| + | } | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ===ruby=== | ||
| + | ====encode==== | ||
| + | <syntaxhighlight lang="ruby" line> | ||
| + | require 'uri' | ||
| + | URI.escape('Test Hi<>?/&;=:') | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ====decode==== | ||
| + | |||
| + | <syntaxhighlight lang="ruby" line> | ||
| + | require 'CGI' | ||
| + | string = CGI::unescape("%27Stop%21%27+said+Fred") | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | ===java=== | ||
| + | |||
| + | ====encode==== | ||
| + | <syntaxhighlight lang="java" line> | ||
| + | String q = "random word £500 bank $"; | ||
| + | String url = "http://example.com/query?q=" + URLEncoder.encode(q, "UTF-8"); | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | ====decode==== | ||
| + | <syntaxhighlight lang="java" line> | ||
| + | String result = java.net.URLDecoder.decode(url, "UTF-8"); | ||
| + | </syntaxhighlight> | ||
| Строка 22: | Строка 86: | ||
==Утилиты== | ==Утилиты== | ||
| + | |||
| + | [https://www.cryptool.org/ CrypTool] | ||
| Строка 29: | Строка 95: | ||
==Полезные ссылки== | ==Полезные ссылки== | ||
| + | |||
| + | |||
| + | [http://meyerweb.com/eric/tools/dencoder/ urlencoder/decoder tool] | ||
| + | |||
| + | [http://www.url-encode-decode.com/ one more encode/decode tool] | ||
| + | |||
| + | [https://en.wikipedia.org/wiki/Percent-encoding вики статья] | ||
Текущая версия на 08:39, 4 июня 2016
Содержание
Чем выделяется
Могут кодироваться как все символы, так и избранные.
Если не все символы,то только следующие:
!*'();:@&=+$,/?#[]
В случае с кодированием всех символов кодировка становится похожей на HEX кодирование.
Где часто используется
Используется преимущественно в кодировании HTTP запросов.
Скрипты
python
encode
import urllib
urllib.quote_plus('string_of_characters_like_these:$#@=?%^Q^$')decode
import urllib
urllib.unquote_plus('erythrocyte+membrane+protein+1%2C+PfEMP1+%28VAR%29')
perl
encode
sub urlencode {
my $s = shift;
$s =~ s/ /+/g;
$s =~ s/([^A-Za-z0-9\+-])/sprintf("%%%02X", ord($1))/seg;
return $s;
}decode
sub urldecode {
my $s = shift;
$s =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
$s =~ s/\+/ /g;
return $s;
}ruby
encode
require 'uri'
URI.escape('Test Hi<>?/&;=:')decode
require 'CGI'
string = CGI::unescape("%27Stop%21%27+said+Fred")
java
encode
String q = "random word £500 bank $";
String url = "http://example.com/query?q=" + URLEncoder.encode(q, "UTF-8");decode
String result = java.net.URLDecoder.decode(url, "UTF-8");
Утилиты