2015-08-30 2 views
1

сегодня утром я заметил возможную уязвимость на моем веб-сайте; Я не уверен, что мой сайт может быть поврежден, но хорошо ...Уязвимость JavaScript-сайта

На моем сайте я использую код JavaScript для открытия (отображения) разных разделов (других страниц) на главной странице;

На главной index.php я этот код, в котором отображаются другие страницы:

В голове:

<?php 
$section = "default"; 
if (isset($_GET["page"])) 
{ 
    $section = $_GET["page"]; 
} 
?> 

В Теле:

<script type="text/javascript"> 
    openPage('<?php echo($page); ?>'); 
</script> 

а также Функция JavaScript такова:

function openPage(page, form) 
{ 
var data = "page=" + page; 
if (form != null) 
    data += "&" + $("#" + form).serialize(); 

$("#content").html("<center>Wait..</center>"); 
$.ajax({ 
    type: "POST", 
    url: "content.php", 
    data: data, 
    success: function(result) { 
     $("#content").html(result); 
    } 
}) 
} 

content.php

<? 
    if (file_exists("pages/".$page.".php")) 
    include("pages/".$page.".php"); 
    else 
    { 
    include("pages/default.php"); 
    } 
?> 

Моя проблема заключается в том, что если я пишу в URL: появляются

url.com/index.php?page=</script><script>alert(1)</script> 

предупреждающее сообщение, что я мог сделать? Это опасно? Как я могу это исправить?

Спасибо всем.

ответ

2

Это не уязвимость JS, это уязвимость вашего кода.

Вы можете использовать htmlspecialchars:

<?php 
$section = "default"; 
if (isset($_GET["page"])) 
{ 
    $section = htmlspecialchars($_GET["page"]); 
} 
?> 

http://www.w3schools.com/php/func_string_htmlspecialchars.asp

+0

Спасибо за быстрый ответ! –

1

Да, это опасно, так как люди с злонамеренно теперь могут сформировать URL, выполняющиеся на стороне клиента код на вашем домене. Это может варьироваться от показа простого окна предупреждения до угона куки. Это называется cross-site scripting.

Игнорирование ваши текущие настройки, является ли хорошим, вы можете исправить уязвимость sanitizing переменной $_GET['page'] перед выводом его:

htmlspecialchars($_GET['page']); 
+0

Благодарим за быстрый ответ! –

Смежные вопросы