2014-10-03 1 views
0

Мы получили отчет о проверке, в котором перечислены некоторые элементы нашего сайта, которые ранее не возникали как проблема. Что в следующем коде является уязвимостью для межсайтового скриптинга?PCI Scan предупреждает нас о межсайтовых скриптах

<?php $Get_url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];?> 
<div class="event-social"> 
    <ul> 
     <li><a href="#" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(location.href), 
         'facebook-share-dialog', 
         'width=626,height=436'); 
         return false;"> 
         <img src="/images/events-calendar/cal-facebook.gif" alt="Share on Facebook" /> 
      </a> 
     </li> 
     <li><a href="http://twitter.com/share?&url=<?php echo $Get_url; ?>&via=niagaraparks"><img src="/images/events-calendar/cal-twitter.gif" alt="Twitter" /></a> 
     </li> 
     <li><a href="#" 
         onclick="window.open('http://plus.google.com/share?url=<?php echo $Get_url; ?>', 
         'popupwindow', 
         'scrollbars=yes,width=800,height=400').focus();"><img src="/images/events-calendar/cal-googleplus.gif" alt="Google+" /></a> 
     </li> 
    </ul> 
</div> 

И здесь:

<li class="social"><a href="http://blog.xxxxxxxxxx.com/?feed=rss2" target="_blank" id="rss"><img src="/images/homepage/icon-blog.png" alt="RSS" /></a></li> 

А затем несколько точек в нашей странице формы контакта (параметр ФАМИЛИЯ, emailc параметра Я и т.д .:

<div class="line"><label for="firstname">First Name</label>:   
     <input id="firstname" maxlength="55" name="firstname" type="text" value="<?=$_REQUEST["firstname"] ?>" /></div> 
    <div class="line"><label for="lastname">Last Name</label>: 
     <input id="lastname" maxlength="55" name="lastname" type="text" value="<?=$_REQUEST["lastname"] ?>" /></div> 
    <div class="line"><label for="email">E-mail</label>: 
     <input id="email" maxlength="100" name="email" type="text" value="<?=$_REQUEST["email"] ?>"/></div> 
      <div class="line"><label for="emailc">Confirm E-mail</label>: 
     <input id="emailc" maxlength="100" name="emailc" type="text" value="<?=$_REQUEST["emailc"] ?>"/></div> 

Любая помощь будет принята с благодарностью.

Подробнее

Я сделал некоторые изменения, которые, я надеюсь, решает мою проблему:

<?php $Get_url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
$Get_url = urlencode($Get_url); 
?> 
<div class="event-social"> 
<ul> 
    <li><a href="#" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u='+encodeURIComponent(location.href), 
        'facebook-share-dialog', 
        'width=626,height=436'); 
        return false;"> 
        <img src="/images/events-calendar/cal-facebook.gif" alt="Share on Facebook" /> 
     </a> 
    </li> 
    <li><a href="http://twitter.com/share?&url=<?php echo $Get_url; ?>&via=niagaraparks"><img src="/images/events-calendar/cal-twitter.gif" alt="Twitter" /></a> 
    </li> 
    <li><a href="#" 
        onclick="window.open('http://plus.google.com/share?url=<?php echo $Get_url; ?>', 
        'popupwindow', 
        'scrollbars=yes,width=800,height=400').focus();"><img src="/images/events-calendar/cal-googleplus.gif" alt="Google+" /></a> 
    </li> 
</ul> 

И для контактной формы, я уже использовал strip_tags при вторя входных переменных в электронную почту, делает это не избежать проблемы? Или мне нужно также избежать переменной на входе? На данный момент, я изменил свое strip_tags или htmlspecialchars:

$emailContents .= "<tr style='padding:10px;'><td style='padding:3px 10px;'><strong>E-mail:</strong> </td><td style='padding:3px 10px;'>" . htmlspecialchars($_POST['email']) . "</td></tr>"; 

Но сканер, кажется, связан с кодом ввода:

  <input id="email" maxlength="100" name="email" type="text" value="<?=$_REQUEST["email"] ?>"/></div> 

Я не уверен, как я хотел бы изменить эти строки бежать/дезинфицировать этот вход.

ответ

1
$_SERVER['REQUEST_URI'] 

Если добавить параметры в конец вашего URL, то $ _SERVER [ «REQUEST_URI»] будет поместить их в сценарий. Это возможная проблема межсайтового скриптинга, потому что тогда вы эхом отдаете значение на странице, а это означает, что посетители вашего сайта могут изменять содержимое страницы.

+0

Спасибо Scoop, не могли бы вы указать мне в сторону устранения этих проблем? Есть ли другой способ вставить параметры? –

+0

После некоторых попыток исправления я добавил более подробную информацию. В настоящее время просматривает несколько видеороликов, но с трудом находит пример, показывающий ввод. –

+0

Все зависит от вашего приложения и того, как оно работает. Однако, предполагая, что вы ничего не делаете с URL-адресом, кроме таргетинга на физические страницы, вы можете удалить все в URL-адрес после «.php», например. – Scoop