2012-05-05 36 views
1

在各種MySQL的查詢,所述查詢字符串的末尾的部分是:MySQL的逃逸getsqlvaluestring ACCID

" WHERE UserID = " . $AccID 

其中

$AccID = $_SESSION['UID']; 

和用戶ID是在分貝的特定表的尊重BIGINT列。

所以我的問題是:我是否需要躲避$AccID這樣GetSQLValueString($AccID, "text")只是爲了安全起見,還是沒有必要,因爲它不是從用戶輸入取?

p.s. $_SESSION['UID']在登錄過程中設置,認證成功後

回答

3

是的,你應該逃避它。當您將其放入$_SESSION(您可能想將其用於其他目的)時,但在插入查詢之前,您不應將其轉義。

最好的辦法是使用參數化的SQL,而不是總是通過字符串連接轉義和構建查詢。熟悉PDOFor a better world

+0

是的,當我將它放在$ _SESSION中時,我只是在查詢字符串中進行轉義,而不是轉義變量。儘管不是用戶輸入變量但只是DB,但轉義它的原因是:比對不起更安全? – MIrrorMirror

+0

@MIrrorMirror比對不起更安全:)。但考慮一下這些參數化查詢,自從我使用它們以後,我的睡眠就會更好。 'mysql_'函數是舊的,並會因爲某種原因而被棄用。 – kapa

+0

會做,謝謝! – MIrrorMirror