【问题标题】:Preventing SQL Injections Via $_Get [duplicate]通过 $_Get 防止 SQL 注入
【发布时间】:2013-05-18 05:32:43
【问题描述】:

我的网站上有一个代码,它调用特定行的 pin,然后回显该行的数据。我需要知道如何使用代码防止 SQL 注入。

这里是:

<?php
if (isset($_GET['pin']))
{
$con=mysqli_connect("server.com","username","password","database");
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
$result = mysqli_query($con,"SELECT * FROM beta WHERE pin = " . $_GET['pin']);
while($row = mysqli_fetch_array($result))
  {
  echo "<table width='600px'><td width='200px'><font face='arial' size='2px'>" . $row['name_pin'] . " " . $row['pin'] . "</font></td><td width='200px'><font face='arial' size='2px'>" . $row['name_info'] . "" . $row['info'] . "</font></td><td width='200px'><font face='arial' size='2px'>" . $row['name_stat'] . " " . $row['stat'] . "</font></td></table>";
  echo "<br>";
  }
mysqli_close($con);
}
?>

提前感谢所有帮助! P.S.:信息越多越好。

【问题讨论】:

  • 您是否看过右侧列出的任何相关问题?

标签: php mysql get echo code-injection


【解决方案1】:

参数化值,

$pin = $_GET['pin'];
$stmt = $dbConnection->prepare('SELECT * FROM beta WHERE pin =  ?');
$stmt->bind_param('s', $pin);
$stmt->execute();

【讨论】:

    【解决方案2】:
    <?php
    if (isset($_GET['pin'])){
    $con=mysqli_connect("server.com","username","password","database");
    $pin= mysqli_real_escape_string($con, $_GET['pin']);
    //rest of code, 
    

    http://php.net/manual/en/mysqli.real-escape-string.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2017-03-14
      • 2015-02-08
      • 2018-03-23
      • 1970-01-01
      • 2019-06-22
      相关资源
      最近更新 更多