首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问一个有关smtp认证缺陷的有关问题(这里比较火,了解的多多指教)

2012-02-16 
问一个有关smtp认证缺陷的问题(这里比较火,了解的多多指教)暂时不管采用什么方式认证,考虑如下问题:A,B,C

问一个有关smtp认证缺陷的问题(这里比较火,了解的多多指教)
暂时不管采用什么方式认证,考虑如下问题:A,B,C都是某邮箱用户,现C在认证时给邮件服务器自己的邮箱名和密码,服务器通过认证,而后是正常的smtp回话,这时,如果C的mail   from字段键入的是A的邮箱名,是不是就可以达到伪造新建的效果了?  
还是一旦认证后,发件人也就一定了??请大家指教!!!

[解决办法]
我帮你确认一下,印象中好像有这个缺陷,是可以不相同的
[解决办法]
原则上可以不同。但是现在很多邮件服务器都带有反垃圾功能,可能会对这里进行校验
[解决办法]
如果C的mail from字段键入的是A的邮箱名,是不是就可以达到伪造新建的效果了?

可以的!!
你甚至可以输入乱七八糟不存在的邮箱名!!

这个我就搞过N次!!

别忘了多给我分啊^_^
[解决办法]
这个依赖于服务器实现

从微软Exchange服务器角度讲,这样是不行的,如果你用用户A帐户验证,mail from写b用户地址,发给C用户,下面事情会发生

1. 如果C在接收服务器所在系统,邮件无条件接收,因为这不需要验证
2. 如果C不属于接收服务器系统,系统会检查B用户是否在A用户对象上有如下权限中的一种
a) send as(这是一个AD权限)
b) send on behalf of(Exchange General或者Exchange Advance上应该有)

3. 系统会检查发送该邮件的终端是否有允许relay权限,如果有,无条件放行


所以针对你问题:如果mail from和验证的用户不一致,缺省无法发给外部用户但是内部收件者不受影响,因为内部用户的邮件接收不需要任何验证
[解决办法]
即使服务器放行了,这也是用户A密码泄漏导致的啊?任何网络通信本身都无法确保安全性,如果你密码不保护的话

对于严格要求邮件真实性的场合,我们不是通过SMTP实现,而是通过数字证书的签名实现的。不同协议有不同协议的用处,不能说是SMTP的缺陷
[解决办法]
注意:如果收件人(也就是rcpt to指向的用户)是接收服务器authorative domain内的用户,接收服务器有义务无条件接收(除非用户不存在,服务器可以拒绝),这是因为绝大多数情况下,发送方没有办法和接收方服务器进行验证

例如我从yahoo.com发信到sina.com,sina.com怎么会提供帐户让我来验证呢?

所以问题只在通过域A发送给域B时才出现,而在缺省情况下,你时发不出去的。

热点排行