Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python email.errors.HeaderParseError:标头值似乎包含嵌入的标头:_Python_Security_Mime Types_Code Injection - Fatal编程技术网

Python email.errors.HeaderParseError:标头值似乎包含嵌入的标头:

Python email.errors.HeaderParseError:标头值似乎包含嵌入的标头:,python,security,mime-types,code-injection,Python,Security,Mime Types,Code Injection,我正在尝试使用office api使用soap消息还原邮件,但对于某些邮件,它给出了“header value似乎包含嵌入的header”错误。 例如 正在以email.errors.HeaderParseError:标头值的形式引发错误 似乎包含嵌入的标题:'me@locmsglhost\NSObject:注射受试者的 但是如果我把msg['From']改为 'hello\r man: man' 'tya: Hello' 'push@#$\r\nPus' 'Hello \n\r Pushpa:

我正在尝试使用office api使用soap消息还原邮件,但对于某些邮件,它给出了“header value似乎包含嵌入的header”错误。 例如

正在以email.errors.HeaderParseError:标头值的形式引发错误 似乎包含嵌入的标题:'me@locmsglhost\NSObject:注射受试者的

但是如果我把msg['From']改为

'hello\r man: man'
'tya: Hello'
'push@#$\r\nPus'
'Hello \n\r Pushpa: World'
'@\r\nhello : World'
然后它就如预期的那样工作了

可能的原因是什么?存在哪些漏洞 在mime消息中是否会出现错误


你不能随意使用任何标题,这是禁止的

如中所述

异常email.errors.HeaderParseError

。。。当试图创建一个似乎包含嵌入头的头时(也就是说,有一个应该是没有前导空格且看起来像头的延续行)


为什么危险且应妥善处理?

首先,您可能会读到,它提供了一个简单的示例,说明如何进行SMTP头注入攻击

你可能会问怎么做?我的意思是你不允许任何人编辑你的后端,对吗

让我们想象一下,对于您的应用程序,可能有一些由用户输入的字段,例如
“message”

msg['message'] = 'abc' #Entered by user
没关系,但是如果

msg['message'] = 'abc\r\nreplyTo:attacker@hello.com'
#or
msg['message'] = 'abc\r\nTo:attacker@hello.com'
攻击者可以轻松覆盖您的电子邮件,例如发送垃圾邮件。这就是为什么它为你做检查


您甚至可以通过以下方式检查收割台是否安全:

email.header.Header('string')

让我们看看python电子邮件库是如何进行检查的。

在源代码中搜索,
Lib/email/header.py

在ln50-52中:

# Find a header embedded in a putative header value.  Used to check for
# header injection attack.
_embedded_header = re.compile(r'\n[^ \t]+:')
你可以试一下,除了你说的那个例子外,你提供的所有例子都可以通过


由于电子邮件头结构始终是
\n(没有空格的键):
,因此
\nhello:
已通过,但未通过
\nhello:

您不能按需使用任何头,这是禁止的

如中所述

异常email.errors.HeaderParseError

。。。当试图创建一个似乎包含嵌入头的头时(也就是说,有一个应该是没有前导空格且看起来像头的延续行)


为什么危险且应妥善处理?

首先,您可能会读到,它提供了一个简单的示例,说明如何进行SMTP头注入攻击

你可能会问怎么做?我的意思是你不允许任何人编辑你的后端,对吗

让我们想象一下,对于您的应用程序,可能有一些由用户输入的字段,例如
“message”

msg['message'] = 'abc' #Entered by user
没关系,但是如果

msg['message'] = 'abc\r\nreplyTo:attacker@hello.com'
#or
msg['message'] = 'abc\r\nTo:attacker@hello.com'
攻击者可以轻松覆盖您的电子邮件,例如发送垃圾邮件。这就是为什么它为你做检查


您甚至可以通过以下方式检查收割台是否安全:

email.header.Header('string')

让我们看看python电子邮件库是如何进行检查的。

在源代码中搜索,
Lib/email/header.py

在ln50-52中:

# Find a header embedded in a putative header value.  Used to check for
# header injection attack.
_embedded_header = re.compile(r'\n[^ \t]+:')
你可以试一下,除了你说的那个例子外,你提供的所有例子都可以通过


由于电子邮件头结构总是
\n(没有空格的key\u):
,因此
\nhello:
通过了,但没有
\nhello:

,但对于“877-237-1843\n密码:4607”、“时间:2014年4月10日上午10:00\n地点:西棕榈滩”、“Anoka桩中心”\n6:30和7:30pmCT”等情况,它正在崩溃“5月1日,星期二上午8:10-8:40,校友礼堂”。但它是这样输入的--“hello\r男:男”tya:hello“push”$\r\nPus“hello\n\r Pushpa:World”@\r\nhello:World。我不理解这种模式,他们在检查它时使用的规则或正则表达式是什么?但对于像“877-237-1843\n密码:4607”这样的情况,它正在被打破“,”时间:2014年4月10日上午10:00:00\n地点:西棕榈滩“,”Anoka Stack Center\n6:30和7:30pmCT“,”以及“5月1日星期二上午8:10-8:40,校友礼堂”。但是它在这样的输入下工作--“hello\r man:man”tya:hello“push@#$\r\nPus”hello\n\r Pushpa:World“@\r\nhello:World”。我不理解这个模式,他们检查的规则或正则表达式是什么?