2014-09-26 87 views
0

假设我在我的HTML中有一个表单域,其name属性为message。在这种形式下,用户将(应该)输入电子邮件的正文。然后这封电子邮件将通过Javascript从浏览器发送。我完成此操作的方式是在mailto:字符串上使用window.open()通过mailto的Javascript注入:

function validateAndSend(form) { 
    var body = form.message.value; 

    window.open("mailto:[email protected]?body=" + body); 
} 

这种方法适用于我,但我担心它的安全性。我听说过SQL注入,,我想知道是否同样的事情适用于我的情况。

是否有可能为恶意用户输入内容的表单字段,这将造成伤害,如

  • 盗窃任何种类的信息
  • 的执行自己的Javascript代码

我试过的东西

  • 我已在发送电子邮件之前添加了检查,以查看文本字段 是否至少包含一个字符,以避免发送大量垃圾邮件 电子邮件。
  • 几个测试用例,我将各种<script>标签添加到输入文本中,试图通过输入运行我自己的代码。这些恶意脚本只是显示在电子邮件的正文中,不会影响任何内容。

上午我通过使用mailto:易受JavaScript注入?

+1

在你的例子中,用户通过修改源代码可以做的唯一事情就是改变默认邮件应用程序中的填充值这将由浏览器启动。除此之外,我不明白Web表单中的验证如何用于任何目的,因为验证不会出现在他们的邮件应用程序中。 – 2014-09-26 02:20:10

回答

0

mailto:将简单地加载OS /浏览器定义的协议的默认处理程序与指定的主体。这最终与直接向您发送电子邮件的内容没有什么不同。

既然你谈谈恶意脚本仍呈现在你试图净化邮件的正文,我觉得你更关心的是有人直接发送,为您和足够深到您当前的问题,你忘记了任何人都可以随时向你发送同样的电子邮件...... :-)