【发布时间】:2014-05-22 17:02:40
【问题描述】:
我知道这是一个被广泛讨论的话题,但在谷歌搜索 PHP 的 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 步 - 在用户进行查询之前验证所有用户输入。第 2 步 - 使用查询参数。
-
SQL 注入与否,此代码不会转义输入,即使是为了防止您的密码可能包含引号字符的简单 SQL 错误
-
在标头重定向后也使用
break;。
标签: php sql sql-server forms sql-injection