我是网页设计的新手,我正在使用一种非常简单的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); ?>
如果这不是提出这类问题的地方,请告诉我,我很乐意将其删除。而且,甚至可能指向一个我能去的地方。
答案 0 :(得分:0)
您的代码不会阻止所谓的“SQL注入”
这意味着有人可以使用sql语句调用您的脚本 $ _POST ['upc']参数
使用mysql_real_escape_string:
您的查询会更好$sql = "SELECT * FROM products WHERE upc = '" . mysql_real_escape_string($upc) . "'";
任何sql代码都将被转义,不会被执行。
编辑:您也可以谷歌搜索一下“SQL注入”,了解这个安全问题