Мои php коды безопасны? - PullRequest
       37

Мои php коды безопасны?

0 голосов
/ 12 ноября 2010

Мои 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');
}

?>

Ответы [ 3 ]

2 голосов
/ 12 ноября 2010

Для большей безопасности, я думаю, будет лучше, если вы добавите проверку для элемента:

$valid_items = array('item1', 'item2', 'item3');

if(in_array($item, $valid_items)) {
  // something if item is valid item
}
1 голос
/ 12 ноября 2010

Я могу использовать is_int () вместо приведения.Но ваш код мне подходит.

Вы должны обрабатывать сообщения об исключениях с помощью ExceptionHandler.

Проверьте, определен ли $ _GET до , пытаясь получить доступ к элементу $ _GET ['«].

0 голосов
/ 12 ноября 2010

Сначала вы можете проверить тип запроса, например,

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
...