2014-09-26 3 views
0

Предположим, что у меня есть поле формы в моем HTML, а его свойство name - message. В эту форму пользователь (предположительно) войдет в тело письма. Это письмо будет отправлено из браузера с помощью Javascript. Как я это делаю, используйте window.open() на строке mailto:.Javascript Injection via mailto:

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

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

Этот подход работает для меня, но меня беспокоит его безопасность. Я слышал о SQL-Injection, , и мне интересно, относится ли это к моей ситуации.

Возможно ли злоумышленник ввести что-то в поле формы, которые будут наносить ущерб такой, как

  • кражи любого вида информации
  • Исполнительное свой собственный код Javascript

Что я пробовал

  • Я добавил чеки перед отправкой электронного письма, чтобы узнать, содержит ли текстовое поле хотя бы один символ, чтобы избежать больших объемов спама .
  • Несколько тестовых примеров, где я добавляю различные теги <script> во входной текст, пытаясь запустить свой собственный код с помощью ввода. Эти вредоносные скрипты просто отображаются в теле письма, не затрагивая ничего.

Am I уязвима для Javascript инъекции через использование mailto:?

+1

Из вашего примера, единственное, что пользователь сможет сделать, изменив источник, - это изменение заполненных значений в почтовом приложении по умолчанию который будет запущен браузером. Помимо этого, я не вижу, как проверка в веб-форме служит любой цели, поскольку проверка не будет присутствовать в их почтовом приложении. –

ответ

0

mailto: просто загрузит обработчик по умолчанию для этого протокола, как определено OS/браузером, с указанным телом. Это в конечном итоге не отличается от того, что они отправляют вам электронное письмо с содержимым напрямую.

Поскольку вы говорите о вредоносных сценариях, которые все еще появляются в теле писем, которые вы пытались очистить, я думаю, что вы больше заинтересованы в том, чтобы кто-то отправил это вам прямо и достаточно глубоко в вашу текущую проблему, «Забыв, кто-нибудь может отправить вам тот же самый адрес электронной почты в любое время ... :-)