如何在PHP中防止SQL注入?

时间:2014-05-22 17:02:41

标签: php sql sql-server forms sql-injection

我知道这是一个被广泛报道的主题,但在搜索谷歌的PHP for MSSQL注入预防后,我发现几乎没有。

这是我能找到的最接近的 answer ,但答案似乎是MySQL而不是MSSQL

我正在使用的PHP代码允许管理员通过表单输入登录到网站以访问后端。此代码是在提交表单后记录管理员的代码:

<?php
  session_start();

  if($_SERVER['REQUEST_METHOD'] == "POST") {
$conn=mssql_connect('d','a','d');
mssql_select_db('d',$conn);
if(! $conn )
{
  die('Could not connect: ' . mssql_get_last_message());
}

    $username = ($_POST['username']);
    $password = ($_POST['password']);

    $result = mssql_query("SELECT * FROM back_end WHERE username='$username' AND
      password='$password'");
  if(mssql_num_rows($result) > 0) {
      $_SESSION['is_logged_in'] = 1;
      $_SESSION['backname'] = $username;
    }
  }

  if(!isset($_SESSION['is_logged_in'])) {
    header("location:logingbm.php");
    echo "<script>alert('Incorrect log-in information!');</script>";
  } else {
    header("location:../d/index.php");
  }
?>

如果有人能给我一些提示,我应该提出哪些代码来防止恶意注入,我们将不胜感激。谢谢你的帮助。

1 个答案:

答案 0 :(得分:5)

您正在使用较旧的mssql扩展程序。它不是longer available as of PHP 5.3。相反,现在有sqlsrv,该功能集包括运行prepared statements的功能,这是运行查询的最安全方式。