我的数据库查询安全

时间:2013-07-29 16:49:31

标签: php mysql security

我是网页设计的新手,我正在使用一种非常简单的ajax方法从数据库中获取产品的ID。对于后端的东西如此新,我想知道是否有人不介意教我一点关于php安全性。

我的第一个问题是post方法和我获取post方法数据的方法。

function setupc(upc) {
    var sku1 = $("#option1 option:selected").data('sku');
    var sku2 = $("#option2 option:selected").data('sku');
    if (sku2 !== null) {
        upc = (sku1 + sku2);
    } else {
        upc = (sku1);
    }
    $('input[name="upc"]').val(upc);

    $.post('getproduct.php', {upc: upc}, function(data){
        $('.result').html(data);
    });
}

这是getproduct.php

<?php
require_once("config.php");

$con=mysql_connect (MySQL, $username, $password);
if (!$con) {
    die("Not connected : " . mysql_error());
}
$db = mysql_select_db($database, $con);
if (!$db) {
    die ("Can\'t use db : " . mysql_error());
}

$upc = "$_POST[upc]";

$sql = "SELECT * FROM products WHERE upc = '$upc'";
$result = mysql_query($sql, $con) or die(mysql_error());
$row=mysql_fetch_array($result);
?>
<input type="hidden" id="id" name="id" value="<? echo $row['id']; ?>">
<input type="text" id="price" value="<? echo $row['price']; ?>">
<?php mysql_close($con); ?>

如果这不是提出这类问题的地方,请告诉我,我很乐意将其删除。而且,甚至可能指向一个我能去的地方。

1 个答案:

答案 0 :(得分:0)

您的代码不会阻止所谓的“SQL注入”

这意味着有人可以使用sql语句调用您的脚本 $ _POST ['upc']参数

使用mysql_real_escape_string:

您的查询会更好
$sql = "SELECT * FROM products WHERE upc = '" . mysql_real_escape_string($upc) . "'";

任何sql代码都将被转义,不会被执行。

编辑:您也可以谷歌搜索一下“SQL注入”,了解这个安全问题