我的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');
}
?>发布于 2010-11-12 16:07:51
我可能会使用is_int()而不是强制转换。但是你的代码对我来说似乎没问题。
您应该使用ExceptionHandler处理异常消息。
在尝试访问$_GET‘’item‘之前,检查$_GET是否已定义为。
发布于 2010-11-12 16:04:06
为了更好的安全性,我认为最好在item上添加验证:
$valid_items = array('item1', 'item2', 'item3');
if(in_array($item, $valid_items)) {
// something if item is valid item
}发布于 2010-11-12 17:23:29
您可以首先检查请求方法的类型,例如
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 herehttps://stackoverflow.com/questions/4162636
复制相似问题