[英]Is it safe using addslashes in php when parameter charset is utf-8?
我讀過許多關於addlashes對於SQL注入都不安全的文章,但是它們都使用GBK編碼引用相同的示例。 所以我的問題是:當參數charset為utf-8時,使用addslashes()防止在PHP中進行SQL注入是否安全?
實際上,有兩個問題合而為一。 因此,最好分別給它們發聲。
對於這個問題
如果charset是utf8,使用addslashes()是否安全?
答案是肯定的,這很安全。
如果單獨使用一個單獨的示例,如果您的字符集為utf8
,則添加斜線可以產生一個安全序列以用於SQL字符串文字。
但是,作為一種保護措施,通常被用來“處理所有輸入數據以使其安全”,這被證明是絕對不安全的。 哪個問題
使用addlashes()防止SQL注入是否安全?
使其成為唯一答案:
僅僅因為這種誠實的功能與防止任何注射無關。 從來沒有。
您必須了解的主要威脅不是半神秘的GBK漏洞,而是完全由濫用此功能引起的。 因為它並不是要保護您免受注射傷害。 保護的主題比簡單的字符串轉義要復雜得多。
問題是要記住很多規則 。 還有很多可能的失敗點。
出於這些原因,簡單的字符串轉義不能視為全方位的保護規則。
從這個角度來看,參數化查詢雖然不提供100%的保護,但無論如何都可以認為是一種更好的方法,可以消除三種最危險的威脅:
以上我認為這三個理由足以改變您的方法。
此外,正確實現的參數化查詢可以使您的代碼更加整潔。 給我您的基於addlashes的代碼段,我將向您展示如何使其縮短3-5倍且更簡潔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.