我已經閱讀了有關db注入的內容,直到我眼睛發紅,論壇搜索,錯過搜索搜索....所以一個徹頭徹尾的問題。我正在使用jquery/ajax。在PHP中避免SQL注入
var characterReg = /^([0-9a-zA-NP-Z]{27,34})$/;
僅用於基本格式驗證。這是傳遞給PHP。在數據庫查詢中使用結果安全嗎?我不是在尋找實際的比特幣地址驗證只是基本格式。
<?php
include('myConnect.php');
$expire = time() + 60 * 60 * 24 * 30;
$path = '/';
if (isset($address)) {
// Query db if address exsists.
$data = mysql_query("SELECT * FROM viewers WHERE address = '$address'");
$info = mysql_fetch_array($data);
if ($info) {
// Build cookie data from db row array.
$bitAdrr = $info['address'];
$id = $info['id'];
$earn = $info['earnings'];
$track = $info['tracking'];
setcookie('user', $bitAdrr . ',' . $id . ',' . $earn . ',' . $track, $expire);
} else {
echo 'empty';
}
}
?>
myConnect.php
<?php
$addr = $_GET['address'];
// Verify address is correct format.
if (strlen($addr) > 26 && strlen($addr) < 35 && !preg_match('/[^A-NP-Za-z0-9]/', $addr)) {
$server = 'mysql.myHost.com';
$user = 'myUserName';
$pass = 'myPassWord';
$db = 'myDataBase';
// Connect to Database
$connection = mysql_connect($server, $user, $pass) or die("Could not connect to server. \n" . mysql_error());
mysql_select_db($db) or die("Could not connect to database. \n" . mysql_error());
$address = $addr;
} else {
exit;
}
?>
可能打針? mysql_real_escape_string(用htmlspecialchars似乎是很慢的。我寧願不要。
停止嘗試擺脫做正確的事是**使用參數化查詢**。這就像你在說:「嘿,我可以在沒有戴上安全帶的情況下駕駛這條路線嗎?」當答案只是放在你的安全帶上。你爲什麼要擔心與數據庫交談的運行時間會使其變得「矮」,文本轉換代碼是多麼「慢」? – 2013-03-18 03:39:03
不,謝謝。當我在我的機器上運行它時,它滯後。你能注入嗎?對不起,快速回復的數量讓我有點不知所措。謝謝。 – user2180814 2013-03-18 03:52:53
我向你保證,無論你遇到什麼樣的速度問題,都不是通過調用mysql_real_escape_string引起的。使用像XDebug這樣的代碼配置文件工具來查找真正的問題。 – 2013-03-18 05:36:33