2014-10-29 44 views
1

我正在向db中插入數據,並且進行了以下驗證,其中我只接受'&@.。之後,我使用mysqli_real_escape_string($var)Php請求表達式是否安全以將數據插入數據庫?

所以我看到它的輸出是:

I\'m a good boy &@ is it secure var for input to DB. 

我的問題:

1)是否有任何安全問題,如果我接受'&@.會出現在哪裏?
2)如果它不是安全問題,那麼它將db插入\。用反斜槓存儲數據有問題嗎?
3)如果它不是安全問題,那麼在用戶面板數據顯示\。那麼是否需要用stripslashes($var);來逃脫?

我的驗證:

$var = "I'm a good boy &@ is it secure var for input to DB."; 

if(preg_match("/^[a-zA-Z0-9.'&@ ]+$/", $var) !== 1) 
    echo "var is NOT OK.<br/>"; 
else 
    echo "var is ok.<br/>"; 

mysqli_real_escape_string($link, $var); 
+3

使用預準備語句時不需要所有這些。 – 2014-10-29 06:32:32

+0

只需使用預準備語句而不是使用mysqli_real_escape_string – Ali 2014-10-29 06:33:39

+0

@ Fred-ii-哇,就可以忽略由單引號引起的所有安全問題!大。一行答案。但根據我的問題,你有任何答案? – creativeartbd 2014-10-29 06:34:22

回答

-1
  1. 有沒有,如果我接受'和&和@和任何安全問題就會出現。 ?
    會有安全問題作爲一個單引號(')用於SQL注入

  2. 如果不是安全問題,那麼它插入\爲DB。用反斜槓存儲數據有問題嗎?
    不,用反斜線存儲數據沒有問題,這就是逃避工作的方式。

  3. 如果它不是安全問題,那麼在用戶面板數據顯示。那麼它是否需要用stripslashes($ var)來轉義;?
    是的,這會造成顯示器中的一個問題,因爲單引號將用一個反斜槓,沒有一個反斜槓,以顯示它進行轉義,你可以使用stripslashes()

所有這些問題,你提的問題可以簡單地忽略,如果你開始使用預處理語句,因爲它不需要任何轉義,所以你的數據庫將是無SQL注入的,不會有反斜槓使你的輸出看起來很糟糕。