亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

沒人問update的$keyAndvalues[]=后面key用的 ` value用的‘嗎?

$keyAndvalues[]="`" . $key . "`" . "=" . "'" . $value . "'"); ?這里$value被 ' 包括而不是 ` ,這里的$value 不需要對特殊字符進行轉義嗎

正在回答

4 回答

因為sql中只有庫名、表名、字段名可能會與sql關鍵字沖突,而?` 這個字符在上面這行代碼里就是把字段名括起來,從而避免沖突,至于 value 不需要轉義,是的,沒錯,value 的內容是值,sql在處理值時是不會和關鍵字沖突的。

0 回復 有任何疑惑可以回復我~
#1

堅持MyDream 提問者

非常感謝!
2017-03-03 回復 有任何疑惑可以回復我~

嗯嗯。澤成的補充是對的。這個教程好像有個全局過濾。記不太清楚了。

0 回復 有任何疑惑可以回復我~
#1

堅持MyDream 提問者

好的,老師
2017-03-21 回復 有任何疑惑可以回復我~

回復 堅持MyDream:不客氣,順便補充說明一下,對于value來說,sql本身是沒啥問題的,但是PHP就有問題了,比如就拿教程里面的這種方式,把變量 $value 里的字符串直接拼接成為 sql 語句,就會存在很大的安全隱患,舉個例子,假設你開發一個密碼登錄的接口,$value1 里存的是用戶賬號,$value2 里存的是用戶密碼,sql語句是這樣子拼的:

$sql = "select * from user where `account` = '".$value1."' and `password` = '".$value2."'";

如果遇到惡意用戶,他在登錄時把密碼填成? 123456' or '1' = '1 ,想一下,你最后會得到什么樣的sql語句,是不是

select * from user where `account` = 'zhangsan' and `password` = '123456' or '1' = '1'

于是只要 '1' = '1' 成立,sql語句就能執行成功。。。

是不是很可怕?這就叫做 sql 注入,是一種很古老的黑客攻擊手段,所以現在一般會用 addslashes 對用戶提交的內容進行轉義,把那些可能會導致sql注入的關鍵字給替換掉。

1 回復 有任何疑惑可以回復我~
#1

堅持MyDream 提問者

恩恩,這個倒是知道了,不過寫出來看到這的人 都會懂!
2017-03-03 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

沒人問update的$keyAndvalues[]=后面key用的 ` value用的‘嗎?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號