我正在创建一个基本博客,我正在使用以下代码。
它正在从网址收集id(总是一个数字),在我使用之前,我想知道是否有人可以检查代码的安全性并让我知道它是否正常?
我真的不想要任何注射等,我希望尽可能保持安全。
<?php
if(is_numeric($_GET['id']) && $_GET['id'] > 0){
include("connectionfile.php");
$ia = intval($_GET['id']);
$ib = mysql_real_escape_string($ia);
$ic = strip_tags($ib);
$qProfile = "SELECT * FROM #### WHERE id='$ic' ";
$rsProfile = mysql_query($qProfile);
$row = mysql_fetch_array($rsProfile);
extract($row);
$title = trim($title);
$post = trim($post);
$date = trim($date);
mysql_close();
}else{
echo 'hack error here';
}
?>
答案 0 :(得分:0)
$ia = intval($_GET['id']);
$ib = mysql_real_escape_string($ia);
$ic = strip_tags($ib);
strip_tags
没用,因为它只与HTML上下文相关。其他两种方法中的任何一种都足以阻止SQL注入。通常,只需使用适当的转义机制来处理您正在处理的语言。在这种情况下,你正在处理SQL,所以mysql_real_escape_string
就好了。有关转义的逐步方法,请参阅The Great Escapism (Or: What You Need To Know To Work With Text Within Text)。
更好的是,使用预处理语句而不是已弃用的mysql_
函数来学习PDO,这样可以更好地解决SQL注入问题。
答案 1 :(得分:0)
mysql_
个功能。它们已被弃用。使用mysqli或
PDO。 htmlentities()
或以其他方式验证数据是否符合您的预期。答案 2 :(得分:0)
这段代码很乱; - )