1. SQL 注入
SQL 注入是非常常見(jiàn)的一種網(wǎng)絡(luò)攻擊方式,主要是通過(guò)參數(shù)來(lái)讓 mysql 執(zhí)行 sql 語(yǔ)句時(shí)進(jìn)行預(yù)期之外的操作。
即:因?yàn)閭魅氲膮?shù)改變SQL的語(yǔ)義,變成了其他命令,從而操作了數(shù)據(jù)庫(kù)。
產(chǎn)生原因:SQL語(yǔ)句使用了動(dòng)態(tài)拼接的方式。
例如,下面這段代碼通過(guò)獲取用戶(hù)信息來(lái)校驗(yàn)用戶(hù)權(quán)限:
import pymysqlsql = 'SELECT count(*) as count FROM user WHERE id = ' + str(input['id']) + ' AND password = "' + input['password'] + '"'cursor = dbclient.cursor(pymysql.cursors.DictCursor)cursor.execute(sql)count = cursor.fetchone()if count is not None and count['count'] > 0: print('登陸成功')但是,如果傳入?yún)?shù)是:
input['id'] = '2 or 1=1'
你會(huì)發(fā)現(xiàn),用戶(hù)能夠直接登錄到系統(tǒng)中,因?yàn)樵?sql 語(yǔ)句的判斷條件被 or 短路成為了永遠(yuǎn)正確的語(yǔ)句。
這里僅僅是舉一個(gè)例子,事實(shí)上,sql 注入的方式還有很多種,這里不深入介紹了。
總之,只要是通過(guò)用戶(hù)輸入數(shù)據(jù)來(lái)拼接 sql 語(yǔ)句,就必須在第一時(shí)間考慮如何避免 SQL 注入問(wèn)題。
那么,如何防止 SQL 注入呢?
2. 預(yù)防 SQL 注入 主站蜘蛛池模板: 安化县| 腾冲县| 乐都县| 收藏| 那坡县| 侯马市| 宁蒗| 蕉岭县| 西宁市| 渝中区| 云和县| 合川市| 那坡县| 许昌县| 琼海市| 剑阁县| 仁布县| 房产| 旬邑县| 荥经县| 内乡县| 鹿邑县| 乌拉特后旗| 永顺县| 三明市| 达尔| 淅川县| 仁怀市| 吐鲁番市| 马龙县| 峨山| 大足县| 濮阳县| 张家界市| 龙州县| 北票市| 栾川县| 沅陵县| 宣恩县| 临夏县| 北安市|