0

我是网页设计的新手,我正在使用一种非常简单的 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); ?>

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

4

1 回答 1

0

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

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

使用 mysql_real_escape_string 您的查询会更好:

$sql = "SELECT * FROM products WHERE upc = '" . mysql_real_escape_string($upc) . "'";

任何 sql 代码都会被转义并且不会被执行。

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

于 2013-07-29T18:38:11.887 回答