Perl 清洗受污染的数据

Perl 清洗受污染的数据,perl,taint,character-properties,Perl,Taint,Character Properties,当我检查污染数据是否有任何坏字符时,是否有unicode属性可以过滤坏字符?我认为“否”是一个轻描淡写的回答,但你有它。不,Unicode没有“坏”或“好”字符的概念(更不用说“丑陋”字符了)。我认为“不”是一个轻描淡写的回答,但你已经知道了。不,Unicode没有“坏”或“好”字符的概念(更不用说“丑陋”字符了)。 包字符::Sid_com; 副内巴德{ 返回 包字符::Sid_com; 副内巴德{ returnXML(因此XHTML)只能包含以下字符: \x09 \x0A \x0D \x{0

当我检查污染数据是否有任何坏字符时,是否有unicode属性可以过滤坏字符?

我认为“否”是一个轻描淡写的回答,但你有它。不,Unicode没有“坏”或“好”字符的概念(更不用说“丑陋”字符了)。

我认为“不”是一个轻描淡写的回答,但你已经知道了。不,Unicode没有“坏”或“好”字符的概念(更不用说“丑陋”字符了)。

包字符::Sid_com;
副内巴德{
返回

包字符::Sid_com;
副内巴德{
returnXML(因此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,则需要转义以下内容:

  • &
    ⇒ <代码>&;
  • ⇒ <代码>
  • (可选)
  • ⇒ <代码>“”(可选,以“
    分隔的属性值除外)
  • ⇒ <代码>&apos;(可选,以
    分隔的属性值除外)
  • HTML应该有相同的要求,如果不是更宽松的要求,那么如果您坚持这样做,您应该是安全的。

    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,则需要转义以下内容:

    • &
      ⇒ <代码>&;
    • ⇒ <代码>(可选)
    • ⇒ <代码>“”(可选,以“
      分隔的属性值除外)
    • ⇒ <代码>&apos;(可选,以
      分隔的属性值除外)


    HTML应该有相同的要求,如果不是更宽松的要求,那么如果你坚持这样做,你应该是安全的。

    你说的“坏字符”是什么意思?这通常是上下文敏感的,更好的解决方案通常是转义它们,而不是将它们过滤掉。但是我必须在转义它们之前找到它们。不一定。您需要的大多数转义函数已经存在。它们处理需要转换的转换,您只需将整个字符串传递给它们。您没有回答问题。什么你不是说“坏性格”吗?或者我应该说“网络表单”是第一个上下文,因为当我处理输入数据时,上下文可能会发生变化。马克·杰森·多米努斯喜欢谈论“普鲁士方法”,你从你知道的好东西开始,当你发现你遗漏的东西时,再加上更多。另一种方法是“美国方式”,你不允许一些事情,而让其他事情有一个疯狂的聚会。你说的“坏角色”是什么意思"?这通常是上下文敏感的,更好的解决方案通常是转义它们,而不是将它们过滤掉。但是我必须在转义它们之前找到它们。不一定。您需要的大多数转义函数已经存在。它们处理需要转换的转换,您只需将整个字符串传递给它们。您没有回答问题。什么你不是说“坏性格”吗?或者我应该说“网络表单”是第一个上下文,因为当我处理输入数据时,上下文可能会发生变化。马克·杰森·多米努斯喜欢谈论“普鲁士方法”,你从你知道的好东西开始,当你发现你遗漏的东西时,再加上更多。另一种方法是“美国方法”,你不允许一些事情,让其他的事情有一个疯狂的聚会。我没想到unicode属性是“坏字符”"但我认为可能会有这样一个答案:如果排除this和this unicode属性,则应该保存。@sid_com,在某些情况下所有字符都是安全的,否则它们就不会存在。您认为什么是不安全的?接受这个答案是因为我认为它最符合我最初的问题。我不希望使用unicode-属性“坏字符”但我认为可能会有这样一个答案:如果你排除这个和这个unicode属性,你应该保存。@sid_com,所有字符在某些情况下都是安全的,否则它们就不会存在。你认为什么是不安全的?接受这个答案,因为我认为它最符合我最初的问题。聪明,但推动了恢复有责任向用户定义什么是不好的(除非有人已经这样做了,尽管有多个问题,OP并没有透露)。聪明,但将定义什么是不好的责任推回给用户(除非已经有人这样做了,尽管存在多个问题,但OP并没有透露这一场景)。当有人遭受跨站点脚本编写的痛苦时,一个原因可能是,他没有像您所展示的那样逃避表单输入?@sid_com,是的。如果您将文本插入HTML,您需要先将其转换为HTML。我在ajax教程中读到:“但是,在:“…3”发送用户输入时始终使用POST请求。”(可能包含未知字符),POST比GET更健壮、更安全”。这与另一种转义有关吗?@sid_com,POST和GET都使用urlencoding,因此该语句对我来说毫无意义。当有人遭受跨站点脚本的痛苦时,一个原因可能是,他没有像您所展示的那样转义表单输入?@sid_com,是的。如果您将文本插入HTML,您需要首先将其转换为HTML。我已经阅读了在ajax教程中:“但是,在:“…3.”发送用户输入(可能包含未知字符)时,始终使用POST请求,POST比GET更健壮、更安全”。这是否涉及不同的转义?@sid_com,POST和GET都使用urlencoding,因此该语句对我来说毫无意义。