Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Зачем такая функция?
 
 автор: Sonic   (11.09.2010 в 11:27)   письмо автору
 
 

Есть такой массив: $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");
?>

  Ответить  
 
 автор: Sonic   (11.09.2010 в 12:51)   письмо автору
 
   для: .....   (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 "

  Ответить  
 
 автор: Sonic   (11.09.2010 в 19:33)   письмо автору
 
   для: .....   (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 не распознал только автоматически.
браузер зло....намереный какой-то. Еле успел остановить шквал страниц которые он при первом запуске хотел вывалить.

  Ответить  
 
 автор: Саня   (11.09.2010 в 12:07)   письмо автору
 
   для: Sonic   (11.09.2010 в 11:27)
 

В той статье рассказываются об уязвимостях линуксовой утилиты sed. Конкретно вам дали ссылку на уязвимость в реализации механизма регулярных выражений.

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

Автор этого РНР-кода собрал все "вредные" последовательности, до которых смог добраться. И пытается "обезопасить" входящие данные.
Я не слышал о багах в РНР, связанных с юникодом, и считаю этот код бесполезным.

  Ответить  
 
 автор: Sonic   (11.09.2010 в 12:48)   письмо автору
 
   для: Саня   (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 &#8205; # ZERO WIDTH JOINER

  Ответить  
 
 автор: Tonik992   (12.09.2010 в 11:17)   письмо автору
 
   для: .....   (12.09.2010 в 08:05)
 

Экранируй вообще всё и удаляй эти символы сразу во имя безопасности Пентагона!

  Ответить  
 
 автор: heed   (15.09.2010 в 12:41)   письмо автору
 
   для: 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)


:)
нужно просто десятка полтора-два совсем никому не нужных символов юникода

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования