【问题标题】:Security in mysqli [duplicate]mysqli中的安全性[重复]
【发布时间】:2013-07-13 13:07:17
【问题描述】:

所以我尝试开始使用 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 的某些值吗? 谢谢!

【问题讨论】:

标签: php sql mysqli


【解决方案1】:

永远不要将这样的 GET 变量用作 SQL 查询中使用的变量,因为有人可以将 GET 变量的值更改为例如“删除表......”。 提高代码的安全性:

【讨论】:

  • 为什么我得到了反对票?
  • 我正在考虑使用一个数组,这样如果 GET 变量不是预期的,它不会做任何事情......这会阻止任何形式的 sql 注入,对吗?另外,我确实读过这个:stackoverflow.com/questions/60174/… 但我真的不明白准备好的陈述......顺便说一句:我真的不知道你为什么投反对票,这对我来说似乎是一个完美的答案
  • @DanielAntónGarcía 啊,好吧!当你想要时,我可以教你什么是准备好的陈述;)我也在评论出现之前写了这个答案,或者我没有注意到它。
猜你喜欢
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
  • 2021-06-21
  • 2019-09-17
  • 1970-01-01
  • 2018-04-03
相关资源
最近更新 更多