Отмывание испорченных данных - PullRequest
1 голос
/ 31 августа 2011

Когда я отмываю испорченные данные, проверяя, нет ли в них плохих символов, существуют ли свойства unicode, которые будут фильтровать плохие символы?

Ответы [ 3 ]

4 голосов
/ 01 сентября 2011

Пользовательские свойства символов в perlunicode

package Characters::Sid_com;

sub InBad {
return <<"BAD";
0000\t10FFFF
BAD
}

sub InEvil {
return <<"EVIL";
0488
0489
EVIL
}

sub InStupid {
return <<"STUPID";
E630\tE64F
F8D0\tF8FF
STUPID
}

⋮

die 'No.' if $tring =~ /
    (?: \p{Characters::Sid_com::InBad}
      | \p{Characters::Sid_com::InEvil}
      | \p{Characters::Sid_com::InStupid}
    )
/x;
3 голосов
/ 31 августа 2011

Я думаю, что «нет» - преуменьшение ответа, но у вас есть.Нет, в Юникоде нет понятия «плохие» или «хорошие» символы (не говоря уже о «некрасивых»).

2 голосов
/ 01 сентября 2011

XML (и, следовательно, XHTML) может содержать только эти символы:

\x09 \x0A \x0D
\x{0020}-\x{D7FF}
\x{E000}-\x{FFFD}
\x{10000}-\x{10FFFF}

Из вышесказанного следует избегать следующего:

\x7F-\x84
\x86-\x9F
\x{FDD0}-\x{FDEF}
\x{1FFFE}-\x{1FFFF}
\x{2FFFE}-\x{2FFFF}
\x{3FFFE}-\x{3FFFF}
\x{4FFFE}-\x{4FFFF}
\x{5FFFE}-\x{5FFFF}
\x{6FFFE}-\x{6FFFF}
\x{7FFFE}-\x{7FFFF}
\x{8FFFE}-\x{8FFFF}
\x{9FFFE}-\x{9FFFF}
\x{AFFFE}-\x{AFFFF}
\x{BFFFE}-\x{BFFFF}
\x{CFFFE}-\x{CFFFF}
\x{DFFFE}-\x{DFFFF}
\x{EFFFE}-\x{EFFFF}
\x{FFFFE}-\x{FFFFF}
\x{10FFFE}-\x{10FFFF}

Если вы генерируете XHTML, вам нужно экранировать следующее:

  • & & rArr; &amp;
  • < & rArr; &lt;
  • > & rArr; &gt; (необязательно)
  • " & rArr; &quot; (необязательно, кроме значений атрибутов, ограниченных ")
  • ' & rArr; &apos; (необязательно, кроме значений атрибутов, ограниченных ')

HTML должен иметь такие же, если не более жесткие требования, поэтому, если вы будете придерживаться этого, вы должны быть в безопасности.

...