|
|
|
| Есть такой массив: $char = array("\0", "\xc2\xad", "\xcc\xb7", "\xcc\xb8", "\xe1\x85\x9F", "\xe1\x85\xA0", "\xe2\x80\x80", "\xe2\x80\x81", "\xe2\x80\x82", "\xe2\x80\x83", "\xe2\x80\x84", "\xe2\x80\x85", "\xe2\x80\x86", "\xe2\x80\x87", "\xe2\x80\x88", "\xe2\x80\x89", "\xe2\x80\x8a", "\xe2\x80\x8b", "\xe2\x80\x8e", "\xe2\x80\x8f", "\xe2\x80\xaa", "\xe2\x80\xab", "\xe2\x80\xac", "\xe2\x80\xad", "\xe2\x80\xae", "\xe2\x80\xaf", "\xe2\x81\x9f", "\xe3\x80\x80", "\xe3\x85\xa4", "\xef\xbb\xbf", "\xef\xbe\xa0", "\xef\xbf\xb9", "\xef\xbf\xba", "\xef\xbf\xbb", "\xE2\x80\x8D");
В общем эти символы которые представлены в массиве $char, вырезаются из поступающих от пользователя данных. То есть из массивов $_GET, $_POST, $_COOKIE, $_REQUEST.
Мне показали ссылку.
Расскажите, это актуально и нужно? Просто нигде не встречал :) Проект на утф. | |
|
|
|
|
автор: ..... (11.09.2010 в 11:55) |
|
|
для: Sonic
(11.09.2010 в 11:27)
| | прикольно :)
<?php
var_dump("hello world", "\xe2\x80\xae", "hello world");
?>
|
| |
|
|
|
|
|
|
|
для: .....
(11.09.2010 в 11:55)
| | Что именно прикольно? :) | |
|
|
|
|
автор: ..... (11.09.2010 в 14:30) |
|
|
для: Sonic
(11.09.2010 в 12:51)
| | выводит в опере
string(11) "hello world" string(3) ""dlrow olleh" (11)ghirts " | |
|
|
|
|
|
|
|
для: .....
(11.09.2010 в 14:30)
| | У меня в FireFox нормально все выводило, в зависимости от кодировки.
Странный Вы какой-то "баг" нашли :) | |
|
|
|
|
автор: ..... (11.09.2010 в 20:55) |
|
|
для: Sonic
(11.09.2010 в 19:33)
| | всегда подозревал что FF какой-то неадекватный браузер :)
не хватает времени перевести в utf8 то что в юникоде перечислено тут
ru.wikipedia.org/wiki/Управляющие_символы
, думаю то-же самое (если это всё).
надо брать на вооружение | |
|
|
|
|
автор: ..... (11.09.2010 в 21:18) |
|
|
для: Sonic
(11.09.2010 в 19:33)
| | проверил в ff то-же самое (или не у всех установлена в системе поддержка письма справа-налево), кодировку utf8 не распознал только автоматически.
браузер зло....намереный какой-то. Еле успел остановить шквал страниц которые он при первом запуске хотел вывалить. | |
|
|
|
|
|
|
|
для: Sonic
(11.09.2010 в 11:27)
| | В той статье рассказываются об уязвимостях линуксовой утилиты sed. Конкретно вам дали ссылку на уязвимость в реализации механизма регулярных выражений.
Юникод довольно сложный и запутанный стандарт кодирования символов. Поэтому в программах бывают ошибки, связанные с некорректной поддержкой юникода. Иногда эти ошибки можно использовать в злых целях. Пример в статье показывает как внедрять вредоносные данные, проходящие фильтрацию регулярными выражениями. Если эти данные больше никак не проверяются, не экранируются и вставляются напрямую в SQL-запрос... то получается классическая SQL-инъекция.
Такое совпадение багов маловероятно, но не невозможно.
Автор этого РНР-кода собрал все "вредные" последовательности, до которых смог добраться. И пытается "обезопасить" входящие данные.
Я не слышал о багах в РНР, связанных с юникодом, и считаю этот код бесполезным. | |
|
|
|
|
|
|
|
для: Саня
(11.09.2010 в 12:07)
| | Спасибо большое.
Замучал гугл в поисках ответа и целесообразности данной функции.
Эта функция из форума punBB. | |
|
|
|
|
автор: ..... (12.09.2010 в 07:30) |
|
|
для: Sonic
(11.09.2010 в 11:27)
| | Не считая нуля опознанными по википедии оказались только несколько
0xad
0x337
0x338
0x115f
0x1160
0x2000
0x2001
0x2002
0x2003
0x2004
0x2005
0x2006
0x2007
0x2008
0x2009
0x200a
0x200b ZERO-WIDTH SPACE
0x200e LEFT-TO-RIGHT MARK.
0x200f RIGHT-TO-LEFT MARK.
0x202a LEFT-TO-RIGHT EMBEDDING.
0x202b RIGHT-TO-LEFT EMBEDDING.
0x202c POP DIRECTIONAL FORMATTING.
0x202d LEFT-TO-RIGHT OVERRIDE.
0x202e RIGHT-TO-LEFT OVERRIDE.
0x202f
0x205f
0x3000
0x3164
0xfeff
0xffa0
0xfff9 ZERO WIDTH NO-BREAK SPACE / BYTE ORDER MARK, (типа bom наверное)
0xfffa
0xfffb
0x200d
|
скрипт
#!perl
use Encode qw(decode); # encode is_utf8
my @a = ("\xc2\xad", "\xcc\xb7", "\xcc\xb8", "\xe1\x85\x9F", "\xe1\x85\xA0", "\xe2\x80\x80",
"\xe2\x80\x81", "\xe2\x80\x82", "\xe2\x80\x83", "\xe2\x80\x84", "\xe2\x80\x85", "\xe2\x80\x86",
"\xe2\x80\x87", "\xe2\x80\x88", "\xe2\x80\x89", "\xe2\x80\x8a", "\xe2\x80\x8b", "\xe2\x80\x8e",
"\xe2\x80\x8f", "\xe2\x80\xaa", "\xe2\x80\xab", "\xe2\x80\xac", "\xe2\x80\xad", "\xe2\x80\xae",
"\xe2\x80\xaf", "\xe2\x81\x9f", "\xe3\x80\x80", "\xe3\x85\xa4", "\xef\xbb\xbf", "\xef\xbe\xa0",
"\xef\xbf\xb9", "\xef\xbf\xba", "\xef\xbf\xbb", "\xE2\x80\x8D");
my $x=0;
while(<DATA>){
printf "%#x\t". $_, ord(decode('utf8', $a[$x]));
++$x;
}
__DATA__
ZERO-WIDTH SPACE, пробел нулевой ширины. При выравнивании по ширине может расширяться.
LEFT-TO-RIGHT MARK. Писать слева направо.
RIGHT-TO-LEFT MARK. Писать справа налево.
LEFT-TO-RIGHT EMBEDDING. Начало текста, написанного слева направо, внутри текста, написанного справа налево.
RIGHT-TO-LEFT EMBEDDING. Начало текста, написанного справа налево, внутри текста, написанного слева направо.
POP DIRECTIONAL FORMATTING. Конец вставленного текста с другим направлением.
LEFT-TO-RIGHT OVERRIDE.
RIGHT-TO-LEFT OVERRIDE.
ZERO WIDTH NO-BREAK SPACE / BYTE ORDER MARK, неразрывный пробел нулевой ширины / индикатор порядка байтов.
|
| |
|
|
|
|
автор: ..... (12.09.2010 в 07:47) |
|
|
для: .....
(12.09.2010 в 07:30)
| | сдвинулся ZERO WIDTH NO-BREAK SPACE/BYTE ORDER MARK
должно быть 0xfeff | |
|
|
|
|
автор: ..... (12.09.2010 в 08:05) |
|
|
для: .....
(12.09.2010 в 07:30)
| | ещё несколько
0x00AD # SOFT HYPHEN
0x2002 # EN SPACE
0x2003 # EM SPACE
0x2004 # THREE-PER-EM SPACE
0x2005 # FOUR-PER-EM SPACE
0x2007 # FIGURE SPACE
0x2008 # PUNCTUATION SPACE
0x2009 # THIN SPACE
0x200A # HAIR SPACE
0x200D ‍ # ZERO WIDTH JOINER | |
|
|
|
|
|
|
|
для: .....
(12.09.2010 в 08:05)
| | Экранируй вообще всё и удаляй эти символы сразу во имя безопасности Пентагона! | |
|
|
|
|
|
|
|
для: Tonik992
(12.09.2010 в 11:17)
| | извиняюсь что не создал новую тему, просто вопрос почти по теме :)
стоит-ли так-же игнорировать вводимые символы, из некототорых этих груп специальных символов, которым ещё нет описания, похоже просто недозаполненные подмножества.
вот например если добавить к тому что есть ещё такое (в добавленном unicode 0X000F вместо 0x000f)
0x115f HANGUL JUNGSEONG FILTER
0x1160 HANGUL CHOSEONG FILTER
0x2000 EN QUAD
0x2001 EM QUAD
0x2002 EN SPACE
0x2003 EM SPACE
0x2004 THREE-PER-EM SPACE
0x2005 FOUR-PER-EM SPACE
0x2006 SIX-PER-EM SPACE
0x2007 FIGURE SPACE
0x2008 PUNCTUATION SPACE
0x2009 THIN SPACE
0x200a HAIR SPACE
0x200b ZERO-WIDTH SPACE
0x200c ZERO WIDTH NON-JOINER
0x200d ZERO WIDTH JOINER
0x200e LEFT-TO-RIGHT MARK.
0x200f RIGHT-TO-LEFT MARK.
0X2028 LINE SEPARATOR
0X2029 PARAGRAPH SEPARATOR
0x202a LEFT-TO-RIGHT EMBEDDING.
0x202b RIGHT-TO-LEFT EMBEDDING.
0x202c POP DIRECTIONAL FORMATTING.
0x202d LEFT-TO-RIGHT OVERRIDE.
0x202e RIGHT-TO-LEFT OVERRIDE.
0x202f NARROW NO-BREAK SPACE
0x205f ????????????????????
0X206A INHIBIT SYMMETRIC SWAPPING
0X206B ACTIVATE SYMMETRIC SWAPPING
0X206C INHIBIT ARABIC FORM SHAPING
0X206D ACTIVATE ARABIC FORM SHAPING
0X206E NATIONAL DIGIT SHAPES
0X206F NOMINAL DIGIT SHAPES
0X20E2 COMBINING ENCLOSING SCREEN
0X20E3 COMBINING ENCLOSING KEYCAP
0X20E4 ????????????????
0X20E5 ????????????????
0X20E6 ????????????????
0X20E7 ????????????????
0X20E8 ????????????????
0X20E9 ????????????????
0X20EA ????????????????
0X20EB ????????????????
0X20EC ????????????????
0X20ED ????????????????
0X20EE ????????????????
0X20EF ????????????????
0X20F0 ????????????????
0X20F1 ????????????????
0X20F2 ????????????????
0X20F3 ????????????????
0X20F4 ????????????????
0X20F5 ????????????????
0X20F6 ????????????????
0X20F7 ????????????????
0X20F8 ????????????????
0X20F9 ????????????????
0X20FA ????????????????
0X20FB ????????????????
0X20FC ????????????????
0X20FD ????????????????
0X20FE ????????????????
0X20FF ????????????????
0X214C-0X214F ??????????????????
0x3000 IDEOGRAPHIC SPACE
0x3164 HANGUL FILTER
0xfeff ZERO WIDTH NO-BREAK SPACE / BYTE ORDER MARK,
0xffa0 HALFWIDTH HANGUL FILTER
0XFFF0 ?????????????????
0XFFF1 ?????????????????
0XFFF2 ?????????????????
0XFFF3 ?????????????????
0XFFF4 ?????????????????
0XFFF5 ?????????????????
0XFFF6 ?????????????????
0XFFF7 ?????????????????
0XFFF8 ?????????????????
0xfff9 INTERLINEAR ANNOTATION ANCHOR
0xfffa INTERLINEAR ANNOTATION SEPARATOR
0xfffb INTERLINEAR ANNOTATION TERMINATOR
|
или значения есть, я не смог найти , или есть риск что значения появятся ?
Просто нужно несколько символов для использования чего-то похожего на разделители текста ([tag] заметно больше и труднее найти), и всётаки не хотелось-бы задеть какой-нибудь нужный иероглиф :)
или не понял нужно-ли трогать трогать что-то из непонятных
0XD800-0XDB7F ???????????????? : High Surrogates (896)
0XDB80-0XDBFF ???????????????? : High Private Use Surrogates (128)
0XDC00-0XDFFF ???????????????? : Low Surrogates (1024)
0XE000-0XF8FF ???????????????? : Private Use (6400)
даже не смог там понять что такое сурогатные пары.
И совсем-бы не хотелось лезть кроме этой
"Плоскость 0 (0000—FFFF): Базовая многоязыковая плоскость (Basic Multilingual Plane, BMP)"
ещё в какие нибудь
Плоскость 1 (10000—1FFFF): Дополнительная многоязыковая плоскость (Supplementary Multilingual Plane, SMP)
Плоскость 2 (20000—2FFFF): Дополнительная иероглифическая плоскость (Supplementary Ideographic Plane, SIP)
Плоскость 3 (30000—3FFFF): Третичная иероглифическая плоскость (Tertiary Ideographic Plane, TIP)
Плоскости 4—13 (40000—DFFFF) не используются
Плоскость 14 (E0000—EFFFF): Дополнительная плоскость особого назначения (Supplementary Special-purpose Plane, SSP)
Плоскость 15 (F0000—FFFFF) используется как дополнительная область-A для частного использования (Supplementary Private Use Area-A, SPUA-A)
Плоскость 16 (100000—10FFFF) используется как дополнительная область-B для частного использования (Supplementary Private Use Area-B, SPUA-B)
:)
нужно просто десятка полтора-два совсем никому не нужных символов юникода | |
|
|
|
|