Мои php-коды безопасны?
<?php $item = (int)$_GET['item']; if (!isset($_GET['item'])) { header('Location: index.php'); exit; } $fileName = "items/" . $item . ".php"; if (file_exists($fileName)) { require_once ("items/" . $item . ".php"); } else { header('Location: index.php'); } ?>
Для большей безопасности, я думаю, будет лучше, если вы добавите проверку для элемента:
$valid_items = array('item1', 'item2', 'item3'); if(in_array($item, $valid_items)) { // something if item is valid item }
Я могу использовать is_int () вместо приведения.Но ваш код мне подходит.
Вы должны обрабатывать сообщения об исключениях с помощью ExceptionHandler.
Проверьте, определен ли $ _GET до , пытаясь получить доступ к элементу $ _GET ['«].
Сначала вы можете проверить тип запроса, например,
if($_SERVER['REQUEST_METHOD'] != 'GET') { header('Location: index.php'); exit; } if (!isset($_GET['item'])) { header('Location: index.php'); exit; } $item = (int)$_GET['item']; /* * just make sure that all you pass is numeric before typecasting it. If you're not * sure...you can do this * $item = is_numeric($_GET['item']) ? (int)$_GET['item'] : null; //or 0 * */ //your code here