2016-03-27 82 views
0

我想以安全模式將數據發佈到數據庫中。 例如,如果我想這個標題添加到數據庫:將帶撇號的字符串插入到數據庫中by php

$title = " here is title 'here is title' here is title "; 

注意到它撇號。

我使用此功能進行串安全:

function stringsafe($string) 
{ 
    $string = strip_tags(trim(addslashes($string))); 
    return $string; 
} 

,你看到它的撇號,使其安全之前添加斜線。

我試圖刪除斜槓時,我通過stripslashes顯示數據,它的工作,但它有一些問題。無論如何要將數據發佈到數據庫中?

回答

2

在附註上,實際上一般的經驗法則是,您根本不應該改變用戶輸入。您應該將任何用戶輸入原樣存儲到數據庫中,以便您可以保留儘可能原創的用戶輸入,並且只有在需要顯示或使用時才能將其轉義。

在你的情況,是的,你是對的,你必須防止它被注入,但你正在改變原來的輸入,通過在原始輸入中添加斜線,這不是很受歡迎。如果我的標題包含像這樣的字符串<My 21st Birthday Party!>並且您將其剝離,該怎麼辦?

嘗試使用Prepared Statements來代替,因此您可以將任何數據插入數據庫,而不用擔心注入。只有當您需要將數據顯示在HTML頁面或控制檯上時,纔會相應地轉義它們,如htmlentities