2012-07-08 63 views
2

可能重複:
Best way to prevent SQL Injection in PHP如何更改普通的sql php代碼來保護pdo?

這是代碼的安全,因爲我使用mysql_real_escape_string和strip_tags的 有沒有必要改變,以PDO? 我無法將以下代碼轉換爲pdo,因爲它的顯示無法修改標題。

<?php 
include('config.php'); 
$link =mysql_connect($db_host,$username,$password); 
mysql_select_db($db_name); 

$id= $_POST["uniqi"]; 
$comments= $_POST["comments"]; 
$comments= mysql_real_escape_string($comments); 
$comments = strip_tags($comments); 

$update = "UPDATE mastertable SET comments = '$comments' WHERE id_pk= '$id'"; 
mysql_query($update, $link); 
mysql_close(); 
header('Location: http://www.xxxx.com/xxxxx/xxxx.php?cntmsg=Comment Updated'); 
?> 
+1

您應該將其轉換爲PDO - mysql擴展[正在被棄用](http://news.php.net/php.internals/53799)。 – DCoder 2012-07-08 15:50:42

+0

http://stackoverflow.com/questions/8028957/headers-already-sent-by-php – PeeHaa 2012-07-08 15:51:33

回答

1

這不是安全的代碼 - 你$id變量不是由你的代碼進行處理。

$id= $_POST["uniqi"]; 
$id= mysql_real_escape_string($id); 
$id = strip_tags($id); 
+0

@vascowhite - 回覆的第一部分是關於代碼安全的實際情況 – 2012-07-08 15:54:58

+0

@TudorConstantin $ id用於更新語句 – Tom 2012-07-08 15:57:42

+0

@Tom - 是的,但是你使用來自客戶端(瀏覽器)的值 - 它可以像你一樣向你發送龍。刪除評論; SELECT''而不是一個id :) – 2012-07-08 16:00:08