所以我试着开始使用mysqli来提高安全性,这就是我目前所拥有的:一个conectar.php文件
<?php
$DBServer = 'X'; // ip o lo que sea
$DBUser = 'X';
$DBPass = 'X';
$DBName = 'X';
$conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
if ($conn->connect_error) {
trigger_error('Database connection failed: ' . $conn->connect_error, E_USER_ERROR);
}
?>
然后是一个php文件,其中包含以下代码:
include("admin/conectar.php");
$categoria = $_GET['categoria'];
if($categoria){
$query_p = $conn->query("SELECT * FROM `productos` WHERE `categoria` = '$categoria' ORDER BY nombre ASC");
while($result_p = $query_p->fetch_object()){
$nombre = $result_p->nombre;
$referencia = $result_p->referencia;;
$descripcion = $result_p->descripcion;
$imagen = $result_p->imagen;
我应该怎么做才能防止黑客攻击或SQL注入??我是否应该设置一个数组,以便只接受$categoria的某些值?谢谢
永远不要将这样的GET变量用作SQL查询中使用的变量,因为有人可能会将GET变量的值更改为例如"DROP TABLE…"。为了提高代码的安全性:
- 思考准备好的陈述
- 使用mysql_real_escape_string或mysqli::real_escape/string