沒(méi)人問(wèn)update的$keyAndvalues[]=后面key用的 ` value用的‘嗎?
$keyAndvalues[]="`" . $key . "`" . "=" . "'" . $value . "'"); ?這里$value被 ' 包括而不是 ` ,這里的$value 不需要對(duì)特殊字符進(jìn)行轉(zhuǎn)義嗎
$keyAndvalues[]="`" . $key . "`" . "=" . "'" . $value . "'"); ?這里$value被 ' 包括而不是 ` ,這里的$value 不需要對(duì)特殊字符進(jìn)行轉(zhuǎn)義嗎
2017-02-27
舉報(bào)
2017-03-03
因?yàn)閟ql中只有庫(kù)名、表名、字段名可能會(huì)與sql關(guān)鍵字沖突,而?` 這個(gè)字符在上面這行代碼里就是把字段名括起來(lái),從而避免沖突,至于 value 不需要轉(zhuǎn)義,是的,沒(méi)錯(cuò),value 的內(nèi)容是值,sql在處理值時(shí)是不會(huì)和關(guān)鍵字沖突的。
2017-03-10
嗯嗯。澤成的補(bǔ)充是對(duì)的。這個(gè)教程好像有個(gè)全局過(guò)濾。記不太清楚了。
2022-03-24
好吧,是DOM0級(jí)我覺(jué)得老師講的很不錯(cuò)。課程不是為你一個(gè)人做的,要考慮大多數(shù)同學(xué)的接受能力。
2017-03-03
回復(fù) 堅(jiān)持MyDream:不客氣,順便補(bǔ)充說(shuō)明一下,對(duì)于value來(lái)說(shuō),sql本身是沒(méi)啥問(wèn)題的,但是PHP就有問(wèn)題了,比如就拿教程里面的這種方式,把變量 $value 里的字符串直接拼接成為 sql 語(yǔ)句,就會(huì)存在很大的安全隱患,舉個(gè)例子,假設(shè)你開(kāi)發(fā)一個(gè)密碼登錄的接口,$value1 里存的是用戶賬號(hào),$value2 里存的是用戶密碼,sql語(yǔ)句是這樣子拼的:
$sql = "select * from user where `account` = '".$value1."' and `password` = '".$value2."'";
如果遇到惡意用戶,他在登錄時(shí)把密碼填成? 123456' or '1' = '1 ,想一下,你最后會(huì)得到什么樣的sql語(yǔ)句,是不是
select * from user where `account` = 'zhangsan' and `password` = '123456' or '1' = '1'
于是只要 '1' = '1' 成立,sql語(yǔ)句就能執(zhí)行成功。。。
是不是很可怕?這就叫做 sql 注入,是一種很古老的黑客攻擊手段,所以現(xiàn)在一般會(huì)用 addslashes 對(duì)用戶提交的內(nèi)容進(jìn)行轉(zhuǎn)義,把那些可能會(huì)導(dǎo)致sql注入的關(guān)鍵字給替換掉。