2013-10-05 24 views
0

假設我正在通過file_get_contents()導入一段文字或獲取用戶輸入,可能會有單引號或雙引號或兩者。將所述內容投入變量並在之後進行操作的安全方式是什麼?在PHP中使用報價和雙引號處理通道的安全方式?

+1

如果您將該數據傳遞給其他函數(如不是二進制安全函數,沒有準備好的語句的數據庫查詢),或者如果您沒有正確轉義輸出它(htmlspecia),則只有安全漏洞lchars())。 – ComFreek

+1

你在這裏期待什麼樣的「不安全感」,你到底在幹什麼?這個問題沒有太大意義。 – deceze

+0

感謝您的意見。你可以看到我想在轉換成變量之後進行轉義。但是,如果段落包含單引號和雙引號,我無法首先將這個變量放在首位。源代碼是外部的json或xml文件。 – Dionysian

回答

0

這取決於你即將與輸入以後做什麼:


輸出HTML:

$input = htmlspecialchars($input); 

使用它的shell命令:

$input = escapeshellarg($input); 

在數據庫查詢中使用它

如果您使用準備好的語句,那就很好。如果沒有(爲什麼?),用途:

$input = mysqli_real_escape_string($mysqli, $string); 
// or 
$input = PDO::quote($input); 

// other database extension may introduce their own quoting functions 

使用它的正則表達式:

$input = preg_quote($input); 

擴展或這個名單的修正讚賞.... :)

+0

謝謝,這是一個非常有用的名單。但在我看來,我太擔心了。我正在使用simplexml_load_file來處理包含單引號和雙引號的xml文件。因此我擔心會有錯誤。但事實證明,PHP實際上可以正確處理。無論如何感謝! – Dionysian

+0

是的,在這種情況下你太擔心了! :) – hek2mgl