mysqlunion使用方法 php如何防止sql注入攻擊?
php如何防止sql注入攻擊?注入攻擊的類型攻擊動(dòng)機(jī)可能有許多不同的類型,但乍一看,似乎有更多的類型。這是非常真實(shí)的——如果惡意用戶找到了執(zhí)行多個(gè)查詢的方法。在本文的后面,我們將詳細(xì)討論這一點(diǎn)。諸如如
php如何防止sql注入攻擊?
注入攻擊的類型
攻擊動(dòng)機(jī)可能有許多不同的類型,但乍一看,似乎有更多的類型。這是非常真實(shí)的——如果惡意用戶找到了執(zhí)行多個(gè)查詢的方法。在本文的后面,我們將詳細(xì)討論這一點(diǎn)。
諸如
如果您的腳本正在執(zhí)行SELECT指令,那么攻擊者可以強(qiáng)制顯示表中的每一行記錄——通過(guò)將11這樣的條件注入WHERE子句,如下所示(其中注入的部分以粗體顯示):
SELECT * FROM sit
SQL聯(lián)合查詢?
交叉連接交叉連接。是一種沒(méi)有任何限制的連接方法,結(jié)果是笛卡爾積。SQL語(yǔ)法如下所示:
上述SQL相當(dāng)于:
內(nèi)部聯(lián)接(默認(rèn)為聯(lián)接)內(nèi)部聯(lián)接。當(dāng)表中至少有一個(gè)匹配項(xiàng)時(shí)返回行可以理解為同時(shí)滿足某些條件的兩個(gè)表中的行的組合。內(nèi)連接又分為等連接、不等連接和自連接。SQL語(yǔ)法如下所示:
使用 作為連接條件。
不平等連接: 不用作連接條件。
自連接:自己連接自己,也就是只連接一個(gè)表。
左連接左連接。一種外部聯(lián)接,返回左表(table1)中的所有行。即使右表(table2)中沒(méi)有匹配項(xiàng),如果右表中沒(méi)有匹配項(xiàng),結(jié)果也是NULL。SQL語(yǔ)法如下所示:
右連接右連接。一種外部聯(lián)接類型,如果左表中沒(méi)有匹配項(xiàng),則返回右表(表2)中的所有行,即使左表(表1)中沒(méi)有匹配項(xiàng)。匹配,結(jié)果為空。SQL語(yǔ)法如下所示:
完全連接。一種外部聯(lián)接,只要左表(表1)和右表(表2)中有一個(gè)匹配項(xiàng),就會(huì)返回一行,從而聚合左聯(lián)接和右聯(lián)接的結(jié)果。SQL語(yǔ)法如下所示:
其中,MySQL不支持全聯(lián)接,全聯(lián)接的查詢可以通過(guò)左聯(lián)接、并聯(lián)接和右聯(lián)接相結(jié)合來(lái)實(shí)現(xiàn)。示例:
聯(lián)合聯(lián)合查詢(去重)。用于合并兩個(gè)或多個(gè)SELECT語(yǔ)句的結(jié)果集。UNION中的每個(gè)SELECT語(yǔ)句必須具有相同順序的相同數(shù)量的列,并且這些列還必須具有相似的數(shù)據(jù)類型。SQL語(yǔ)法如下所示:
注意:聯(lián)合查詢的結(jié)果中沒(méi)有重復(fù)的值。
UNION ALL union查詢(無(wú)重復(fù))。用于合并兩個(gè)或多個(gè)SELECT語(yǔ)句的結(jié)果集。UNION結(jié)果集中的列名始終等于UNION中第一個(gè)SELECT語(yǔ)句中的列名。SQL語(yǔ)法如下所示:
或者:
注意:
UNION ALL查詢的結(jié)果中允許有重復(fù)值。
使用UNION或UNION ALL時(shí),只能在最后一個(gè)SELECT語(yǔ)句中使用ORDER BY命令。