我是新來的網頁設計,我用一個非常簡單的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); ?>
如果這不是要問這類問題的地方,請讓我知道,我會很樂意將其刪除。而且,甚至可能將我指向一個我可以去的地方。
是的,你通過腳本'$ _ POST容易受到SQL注入[「UPC」]'。 – Gumbo
如果您切換到'mysqli'或'pdo'並使用參數化查詢,則許多安全隱患消失。使用mysql_ * api可能很難正確編寫SQL查詢,所以當它被棄用時爲什麼會這麼麻煩。 –
在您編寫任何**更多SQL接口代碼之前,請閱讀[SQL注入漏洞](http://bobby-tables.com/)以及如何[正確地越獄您的值](http:// bobby- tables.com/php)。你應該不**在新的應用程序代碼中使用'mysql_query',它已被棄用並從PHP中刪除。 [PDO不難學](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/),並將提供一些當您遵守使用參數化查詢的規定時,您將受益匪淺。 – tadman