2016-10-31 19 views
0

Я запускаю приложение webinspect для обнаружения угроз безопасности в своем приложении. Одной из обнаруженных угроз была сценария (Cross-Frame Scripting), и я исправил ее, добавив заголовок (X-Frame-Options) (SAMEORIGIN). Теперь, когда я повторно запустить WebInspect он все еще обнаруживает (Cross-Frame Scripting) и следующее сообщение сообщается с ним:Защитный веб-инспектор не признает, что мой фрейм как эффективный

Эффективная методика кадров перебора не наблюдалось при загрузке эту страницу внутри фрейма

Я использовал много кода блочного перебора, но та же проблема сохраняется. Я попытался следующие блочные киллеров:

Первая попытка:

<style> html{display:none;} </style> 
    <script>  
    if(self == top) { 
    document.documentElement.style.display = 'block';} 
    else { 
    top.location = self.location; } 
</script> 

Вторая попытка:

if (top != self) { top.location.replace(self.location.href); } 

Третья попытка:

if(top.location!=self.locaton) { 
    parent.location = self.location; 
} 

ответ

0

Define "эффективную один".

В то время как три фрагмента кода JavaScript, которые вы представили, действительно работают, вы рассмотрели способы остановить это?

Например, в IFRAME (который будет контролировать злоумышленник), добавьте атрибут песочнице с пустым значением:

<iframe src="Inner.html" sandbox=""> 

iframe documentation

Вот тестовый образец я сделал:

Outer.html

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>Outer Html</title> 
    </head> 
    <body> 
     <h1>Outer Html</h1> 
     <p> 
      Outer Html 
     </p> 
     <iframe src="Inner.html" width="400" height="300" sandbox=""> 
      <p>Your browser does not support iframes.</p> 
     </iframe> 
    </body> 
</html> 

Inner.html

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <title>Inner Html</title> 
    <script>  
    if (top != self) { top.location.replace(self.location.href); } 
</script> 
    </head> 
    <body> 
     <h1>Inner Html</h1> 
     <p> 
      Inner Html 
     </p> 
    </body> 
</html> 

X-Frame-Options

Если вы используете X-Frame-Options и код JavaScript, чтобы убедиться, что вы не в кадре, то почему бы не установить значение DENY вместо SAMEORIGIN?

С SAMEORIGIN ваша поверхность атаки меньше, она будет успешной, если iframe исходит из вашего сайта (возможно, с другой уязвимостью). Если вы не собираетесь делать iframes на своем сайте, вы также можете пойти с более безопасным вариантом X-Frame-Options: DENY.

Я думаю, что это то, что ожидается HPE Fortify WebInspect.

Content Security Policy (CSP) каркасные предки директивы

Другой вариант заключается в использовании frame-ancestors директивы со значением 'Нет' в HTTP-заголовок 'Content-Security-Policy'. Это предотвратит (в поддерживаемых браузерах) любой домен от создания содержимого. Этот параметр рекомендуется, если для кадрирования не была определена конкретная потребность.

большой ресурс

Вы можете найти более подробную информацию о prevetion из ClickJacking над на OWASP's Clickjacking Defense Cheat Sheet

+0

Спасибо. Я дам ему попробовать – Ala

+0

@Ala это сработало? – Rotem

+0

@ Rotem no it not – Ala