У моей компании есть партнеры, которые встраивают на свой сайт несколько наших веб-страниц с помощью динамически создаваемого iframe. Исходный URL-адрес для iframe взят из строки запроса на сайте партнера, поэтому я хочу убедиться, что нет риска межсайтовой скриптинговой атаки, поскольку мы используем ненадежный ввод в качестве источника iframe.
Исходный URL-адрес всегда является относительным URL-адресом (имя нашего хоста жестко закодировано в Javascript и добавляется к относительному URL-адресу), и мы проводим некоторую проверку входного URL-адреса, чтобы убедиться, что он начинается с «index.php», поскольку запросы направляются через эту страницу на нашем сайте. Например, если на сайте клиента был открыт следующий URL:
www.ourpartner.com/home.html?url=index.php%3Fid%3D999
Исходный URL для iframe будет http://www.oursite.com/index.php?id=999. iframe генерируется в Javascript с использованием createElement следующим образом:
...
// We assign the url value from the query string to the variable urlparam
if(! urlparam.match(/^index\.php/i) ) {
// Error. Quit.
}
var myiframe = document.createElement('iframe');
myiframe.src = 'http://www.oursite.com/' + urlparam;
document.getElementById('iframe_container').appendChild(myiframe);
Есть ли вероятность, что злоумышленник может внедрить вредоносный URL-адрес в источник iframe? Браузеры, по-видимому, экранируют любые объекты HTML, которые могут появляться в URL, такие как двойные кавычки и левые / правые угловые скобки. Должны ли мы принимать какие-либо дополнительные меры предосторожности с URL-адресом?
Спасибо!