首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sendmail和代码注入

sendmail和代码注入
EN

Stack Overflow用户
提问于 2013-02-16 02:29:26
回答 2查看 782关注 0票数 0

我正在通过'sendmail‘发送内容,其中包括一些用户提供的数据。我称它为perl,例如

代码语言:javascript
复制
open(MAIL, "| /usr/sbin/sendmail -fsomeone\@somewhere.com -t ") 
print MAIL "the user content..."
close(MAIL)

这里有没有什么风险,比如用户以注入代码的方式格式化他的数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-16 02:47:31

Perl脚本本身不会因此而面临风险(我假设“用户内容”代表变量的内容)。但是,无论谁收到邮件,都要受“用户内容...”的支配。可能是吧。

为了确保不会发生任何糟糕的事情,我们需要更多地查看您的脚本。请阅读(并确保您理解) Dawid Wheeler的"Secure programming for Linux and Unix HOWTO",同时查找安全的Perl编程(也许CERT standard是一个很好的起点)。

票数 2
EN

Stack Overflow用户

发布于 2013-02-16 03:09:08

这取决于命令行参数中的电子邮件地址是硬编码的,还是用户提供的。

如果命令是硬编码的,并且您使用了双引号字符串,则将内插@somewhere数组。我假设这是一个打字错误,它将被反斜杠。

如果地址可以是用户设置(open MAIL, "| ... -f$adress"),则容易受到外壳代码注入攻击:$adress = '; rm -rf * ;'

这可以通过输入验证和/或对open使用多个参数来避免

代码语言:javascript
复制
open my $MAIL, "|-", "/usr/bin/sendmail", @args or die ...;

由于单独的参数更安全,因此better

  • Explicit

  • 词法文件句柄是开放模式的,以避免command.

  • Return

的外壳解释检查

-t标志将(iirc)从用户输入中读取标题值。这不会影响脚本的安全性,但会允许用户包含假标头。用户可能会滥用你的脚本来达到他们的目的,例如垃圾邮件!最好是自己构造消息头,并限制用户只提供消息的正文。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14901080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档