gpt4 book ai didi

python - 电子邮件错误.HeaderParseError : header value appears to contain an embedded header:

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:35 24 4
gpt4 key购买 nike

我正在尝试使用 Office api 使用肥皂消息恢复邮件,但某些邮件出现“ header 值似乎包含嵌入式 header ”错误。例如。

msg = MIMEMultipart()
msg['From'] = 'me@locmsglhost\r\nSubject: injected subject'
msg.as_string()

is throwing an error as email.errors.HeaderParseError: header value appears to contain an embedded header: 'me@locmsglhost\nSubject: injected subject'

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

'hello\r man: man'
'tya: Hello'
'push@#$\r\nPus'
'Hello \n\r Pushpa: World'
'@\r\nhello : World'

然后它就按预期工作了。

What could be the possible reasons and What sort of vulnerabilities would there be in mime message?

最佳答案

您不能随心所欲地使用任何 header ,这是禁止的。

Documentation 中所述,

exception email.errors.HeaderParseError

... when an attempt is made to create a header that appears to contain an embedded header (that is, there is what is supposed to be a continuation line that has no leading whitespace and looks like a header).

<小时/>

为什么它很危险并且应该妥善处理?

首先,您可以阅读this ,它提供了一个如何进行 SMTP header 注入(inject)攻击的简单示例。

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

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

msg['message'] = 'abc' #Entered by user

没关系,但是如果

msg['message'] = 'abc\r\nreplyTo:attacker@hello.com'
#or
msg['message'] = 'abc\r\nTo:attacker@hello.com'

攻击者可以轻松覆盖您的电子邮件,例如发送垃圾邮件。这就是它为您进行检查的原因。

<小时/>

您甚至可以通过以下方式检查 header 是否安全

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]+:')

你可以尝试一下,除了你说的那个之外,你提供的所有例子都可以通过。

由于电子邮件 header 结构始终为 \n(key_without_space):,因此 \nhello : 已通过,但 \nhello: 未通过。

关于python - 电子邮件错误.HeaderParseError : header value appears to contain an embedded header:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52812936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com