一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

SQLite 注入 | w3cschool菜鳥(niǎo)教程

 普普通通 2015-03-12

SQLite 注入

如果您的站點(diǎn)允許用戶通過(guò)網(wǎng)頁(yè)輸入,并將輸入內(nèi)容插入到 SQLite 數(shù)據(jù)庫(kù)中,這個(gè)時(shí)候您就面臨著一個(gè)被稱為 SQL 注入的安全問(wèn)題。本章節(jié)將向您講解如何防止這種情況的發(fā)生,確保腳本和 SQLite 語(yǔ)句的安全。

注入通常在請(qǐng)求用戶輸入時(shí)發(fā)生,比如需要用戶輸入姓名,但用戶卻輸入了一個(gè) SQLite 語(yǔ)句,而這語(yǔ)句就會(huì)在不知不覺(jué)中在數(shù)據(jù)庫(kù)上運(yùn)行。

永遠(yuǎn)不要相信用戶提供的數(shù)據(jù),所以只處理通過(guò)驗(yàn)證的數(shù)據(jù),這項(xiàng)規(guī)則是通過(guò)模式匹配來(lái)完成的。在下面的實(shí)例中,用戶名 username 被限制為字母數(shù)字字符或者下劃線,長(zhǎng)度必須在 8 到 20 個(gè)字符之間 - 請(qǐng)根據(jù)需要修改這些規(guī)則。

if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches)){
   $db = new SQLiteDatabase('filename');
   $result = @$db->query("SELECT * FROM users WHERE username=$matches[0]");
}else{
   echo "username not accepted";
}

為了演示這個(gè)問(wèn)題,假設(shè)考慮此摘錄:To demonstrate the problem, consider this excerpt:

$name = "Qadir'; DELETE FROM users;";
@$db->query("SELECT * FROM users WHERE username='{$name}'");

函數(shù)調(diào)用是為了從用戶表中檢索 name 列與用戶指定的名稱相匹配的記錄。正常情況下,$name 只包含字母數(shù)字字符或者空格,比如字符串 ilia。但在這里,向 $name 追加了一個(gè)全新的查詢,這個(gè)對(duì)數(shù)據(jù)庫(kù)的調(diào)用將會(huì)造成災(zāi)難性的問(wèn)題:注入的 DELETE 查詢會(huì)刪除 users 的所有記錄。

雖然已經(jīng)存在有不允許查詢堆疊或在單個(gè)函數(shù)調(diào)用中執(zhí)行多個(gè)查詢的數(shù)據(jù)庫(kù)接口,如果嘗試堆疊查詢,則會(huì)調(diào)用失敗,但 SQLite 和 PostgreSQL 里仍進(jìn)行堆疊查詢,即執(zhí)行在一個(gè)字符串中提供的所有查詢,這會(huì)導(dǎo)致嚴(yán)重的安全問(wèn)題。

防止 SQL 注入

在腳本語(yǔ)言中,比如 PERL 和 PHP,您可以巧妙地處理所有的轉(zhuǎn)義字符。編程語(yǔ)言 PHP 提供了字符串函數(shù) sqlite_escape_string() 來(lái)轉(zhuǎn)義對(duì)于 SQLite 來(lái)說(shuō)比較特殊的輸入字符。

if (get_magic_quotes_gpc()) 
{
  $name = sqlite_escape_string($name);
}
$result = @$db->query("SELECT * FROM users WHERE username='{$name}'");

雖然編碼使得插入數(shù)據(jù)變得安全,但是它會(huì)呈現(xiàn)簡(jiǎn)單的文本比較,在查詢中,對(duì)于包含二進(jìn)制數(shù)據(jù)的列,LIKE 子句是不可用的。

請(qǐng)注意,addslashes() 不應(yīng)該被用在 SQLite 查詢中引用字符串,它會(huì)在檢索數(shù)據(jù)時(shí)導(dǎo)致奇怪的結(jié)果。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日韩精品视频高清在线观看| 国产毛片对白精品看片| 六月丁香六月综合缴情| 久久99青青精品免费| 国产白丝粉嫩av在线免费观看| 国产精品二区三区免费播放心| 日韩日韩欧美国产精品| 中文字幕中文字幕一区二区| 91久久国产福利自产拍| 午夜视频成人在线观看| 特黄大片性高水多欧美一级| 国产又黄又猛又粗又爽的片| 人妻久久这里只有精品| 欧美日韩国产欧美日韩| 加勒比系列一区二区在线观看| 国产一区二区三区口爆在线| 色婷婷视频在线精品免费观看| 日本东京热加勒比一区二区| 视频在线观看色一区二区| 日韩专区欧美中文字幕| 欧美亚洲91在线视频| 国产在线一区二区三区不卡| 日韩午夜老司机免费视频| 日韩午夜老司机免费视频| 尹人大香蕉一级片免费看| 国产精品免费视频视频| 欧美亚洲另类久久久精品| 欧美一区二区在线日韩| 午夜精品国产精品久久久| 欧美日韩人妻中文一区二区| 欧美日韩亚洲巨色人妻| 国产精品内射视频免费| 99日韩在线视频精品免费| 中文字幕久热精品视频在线| 日韩av亚洲一区二区三区| 暴力性生活在线免费视频| 成人国产激情福利久久| 中文字幕欧美视频二区| 91人妻人人揉人人澡人| 国产精品香蕉在线的人| 亚洲精品高清国产一线久久|