【发布时间】:2009-09-04 20:22:06
【问题描述】:
我正在从 mysql 数据库中获取文本,并通过 url 中的 ID 获取它:
site.php?id=1 等等
什么被认为是最安全的,以防止 sql 注入和东西。这种方式是否正确:
<?php
$news_id = $_GET['news_id'];
if(!is_numeric($news_id)) die('Wrong');
//mysql_query and stuff here
?>
或者这样:
<?php
$news_id = $_GET['news_id'];
if(!intval($news_id)) die('Wrong');
//mysql_query and stuff here
?>
【问题讨论】:
-
对 is_numeric 的一点说明,它允许使用十六进制字符(从安全角度来看,这没什么大不了的)。如果你真的想检查一个数值,请使用 ctype_digit,确保输入一个字符串,而不是 int:ctype_digit ( (int) 123 ); // false ctype_digit ('123'); // 是的