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

webgame中常見安全問題、防御方式與挽救措施

安全 應用安全
在本文中,筆者以webgame研發者角度,切合游戲業務模塊邏輯,從業務需求,數據庫設計,程序編寫,操作方式上來講解漏洞形成原理,規避方案。

在本文中,筆者將以webgame研發者角度,切合游戲業務模塊邏輯,從業務需求,數據庫設計,程序編寫,操作方式上來講解漏洞形成原理,規避方案,也歡迎大家討論。

登錄認證

近幾年,網頁游戲幾乎都是以聯運方式運營,意味著游戲服務器本身不保存用戶密碼,用戶登錄在平臺,通過平臺跟游戲服務器的接口對接登錄。接口做加密認證。故webgame的帳號密碼安全問題,這里不提了。但登錄認證的hash字符串安全,也還是要注意的。比如登錄hash字符串的生效時間,hash字符串的加密參數來源,比如包括用戶名、登錄IP,瀏覽器user-agent等數據,以防止改hash被泄漏了,也是很難通過服務器的驗證。

游戲充值

webgame的游戲充值流程,跟普通網頁充值流程一致,沒有特殊的地方,其不同點就是跟其他眾多平臺做聯合運營時,勢必要每個公司做接口對接,且接口規范各式各樣,且游戲廠商沒有話語權,必須按照他們的接口規范來,這實在棘手。騰訊的充值接口的驗證方式,安全性做的較為突出,大約代碼:

// 返回參數列表
$signKey = array('openid','appid','ts','payitem','token','billno','version','zoneid','providetype','amt','payamt_coins','pubacct_payamt_coins');
$sign = array();
//從GET參數中,對比找出上面參數的值
foreach($signKey as $key ) {
if (isset($data[$key]))
{
$sign[$key] = $data[$key]; //只有 GET里有的參數,才參與sig的計算
}
}
######開始生成簽名############
//1: URL編碼 URI
$url = rawurlencode($url);
//2:按照key進行字典升序排列
ksort($sign);
//3: &拼接,并URL編碼
$arrQuery = array();
foreach ($sign as $key => $val )
{
$arrQuery[] = $key . '=' . str_replace('-','%2D',$val);
}
$query_string = join('&', $arrQuery);
//4 以POST方式拼接 1、3 以及URL
$src = 'GET&'.$url.'&'.rawurlencode($query_string);
// ## 構造密鑰
$key = $this->config->get('qq_appkey').'&';
//### 生成簽名
$sig = base64_encode(hash_hmac("sha1", $src, strtr($key, '-_', '+/'), true));
if ( $sig != $data['sig'] ) {
$return['ret'] = 4;
$return['msg'] = '請求參數錯誤:(sig)';
$this->output->set(json_encode($return));
return ;
}

在此基礎上,還可以做的嚴謹點:

增加隨機參數名、參數值。隨機參數名、參數值由聯運方隨機生成,按照參數名的字符串所屬ASCII碼順序排序,參數名、參數值均參與sign的計算,增加暴力破解密鑰(app key)難度。

增加回調驗證訂單號,金額信息。游戲充值服務器接收到充值請求時,反向到該平臺回調接口,確認此筆訂單有效性,以防止加密密鑰泄漏的問題。

遠程文件引入

在網頁游戲的研發中,多數都是使用框架來做,即使用REQUEST來的參數,作為請求文件名的一部分,來使用,那么很容易形成遠程文件引入的漏洞。在我們之前的游戲中,曾出現過一例這樣的漏洞問題。

// Load the local application controller
// Note: The Router class automatically validates the controller path. If this include fails it
// means that the default controller in the Routes.php file is not resolving to something valid.
if ( ! file_exists(APPROOT.'controllers/'.load('Router')->getDirectory().load('Router')->getClass().EXT))
{
load('Errors')->show404('Unable to load your default controller. Please make sure the controller specified in your Routes.php file is valid.');
}
include(APPROOT.'controllers/'.load('Router')->getDirectory().load('Router')->getClass().EXT);
load('Benchmark')->mark('load_basic_class_time_end');

 

 

webgame中的遠程文件引入

從代碼以及案例圖中,可以看到對于REQUEST的參數沒有過濾處理,直接作為文件名來include引入的,故導致這種問題,類似上頁圖中QQ群網站的漏洞。若PHP version < 5.3.4 ,還會發生Null(%00) 截斷的問題,帶來更大的安全問題。在我們新的項目中,我們更改了實現方式,我們游戲所有接口都會走gateway,gateway里,對控制器名做類名規范的檢測處理,再在指定幾個目錄下做autoload加載文件,且還會對REQUEST的類名、方法用ReflectionClass反射類的處理,檢測到類、方法、參數是否合法。一來避免『遠程文件引入』漏洞問題,二來便于前后端聯調時,拋出更詳細的異常,方便調試。下面為參考代碼:

require_once CONFIG_PATH . "/auto.php";
spl_autoload_register("__autoload");
……
//默認消息格式
$view->clear();
$view->error(MLanguages::COM__INVALID_REQUST);
$msg = new Afx_Amf_plugins_AcknowledgeMessage($val->data[0]->$messageIdField);
$msg->setBody($view->get());
$message->data = $msg;
…
$a = new Yaf_Request_Simple();
$a->setControllerName($method[0]);
$a->setActionName($method[1]);
$objC = new ReflectionClass($method[0]."Controller");
$arrParamenter = $objC->getMethod($method[1]."Action")->getParameters();
$arrRequest = isset($val->data[0]->body[0]) ? (array)$val->data[0]->body[0] : array();
$bCanCall = true;
foreach ($arrParamenter as $objParam)
{
$parm = $objParam->getName();
$bIsOption = $objParam->isOptional(); //是否為可選參數
if (isset($arrRequest[$parm]))
{
$a->setParam($parm , $arrRequest[$parm]);
}
elseif ($objParam->isOptional())
{
//可選參數
}
else
{
$bCanCall = false;
}
}
if ($bCanCall)
{
$rp = $app->getDispatcher()->dispatch($a);
$msg = new Afx_Amf_plugins_AcknowledgeMessage($val->data[0]->$messageIdField);
$msg->setBody($view->get());
$message->data = $msg;
}

SQL 注入

SQL注入原理、方式,跟普通web應用一樣,沒什么特別的,在使用REQUEST來的參數時,過濾處理即可。可能在消息格式,以及注入操作簡便上,會蒙蔽研發人員的眼睛,被忽略掉了。比如我們項目的AMF消息格式,在前端界面沒出來之前,我們后端程序員一般使用Pinta來模擬操作,調試程序。前端界面出來之后,會使用Charles proxy來捕捉http請求。在這些過程中,請求接口、參數的構造,沒有普通web那么簡單。研發人員也容易忽略對請求參數的過濾,故很容易形成這種問題。形成原理見:《WEB開發安全與運維安全淺見》,防御方式做過濾處理,或SQL預編譯。

 

 

AMF消息格式的WEBGAME中的SQL注入

 

 

AMF消息格式的WEBGAME中的SQL注入

為了提高游戲服務器的吞吐能力,網頁游戲的架構也是一直在演變的。在之前以Mysql作為數據存儲的webgame架構中,其他節點都是可以水平擴展,或者說依賴簡單粗暴的增加服務器來解決,單單作為唯一數據存儲中心,不能這么做。為此,很多webgame的數據存儲改用Nosql來代替,甚至java、C/C++的游戲數據,直接在內存中操作,游戲關服時,才寫入到DB中。故SQL注入的問題,也會越來越少。

通訊協議與消息格式

網頁游戲雖然名字叫網頁游戲,但通訊協議并非全是http,也有很多使用socket,以及http+socket并用的做法。我們是http協議+amf消息格式,以及socket并用來實現。在http與https的取舍上,我們考慮到ssl的啟用后,大量的ssl解密加密運算,勢必會增加服務器大量的CPU計算壓力。而傳輸的內容,多數是游戲業務的操作,響應,是能接受被監聽嗅探的行為的(認證信息除外)。站在安全角度,這不能理解。但站在產品角度,考慮一下 投入產出,然后選擇http通訊,也是可以理解的。socket在我們游戲中,除了在聊天應用上使用外,在一些組隊、幫派戰之類需要多個玩家之間同步數據信息時,我們也會使用socket來推送數據。在使用socket作為所有業務傳輸的協議時,協議格式一般都是開源協議,比如msgpack、protobuf之類,或者自定義的協議。使用自定義協議時,務必檢測整個消息包的每一個參數,類型范圍,避免個別超大數值、邊界數值出現,導致主程序內存越界,以至于服務宕機,無法正常服務的情況發生。

金幣復制-整型溢出

上周周六開周會時,聽到其他項目組的一個關于整型溢出導致產生刷金幣的問題。在這里,我抽象該案例,分享一下。商城出售開啟背包格子的所需道具『梧桐木』。在游戲中,用戶包裹格子數量一般都會作為一個收費點,一款游戲的格子大約為每行7格子,一共8行這樣。比如前面3行是默認開放的,第4行是收費的,而且第一個格子所需品梧桐木的價格1個銀子,第二個梧桐木是2個銀子,第三個是4個銀子。依次類推,意味著這些梧桐木的價格總和其實就是一個第一項為1,公比為2,項為35的等比數列。 當用戶選擇購買梧桐木數量大于31時,比如32-36中這些數字時,這些等比數列的和就是大于2147483647。(只是舉例,實際上不會以這樣的價格出售物品)

在java中,4字節的存放int型變量的范圍是-2147483648至2147483647。在java、c的有符號int型中存儲時,數的最高位描述符號位,4字節共32位,除去最高位的符號位,剩下31位,每個位上能表示2個數字,4字節的有符號的整數表示范圍為:負整數2^31個,范圍為『-1至-2147483648』;正整數2^31個,范圍為『2147483647至1』。 比如下圖(注意十進制數字跟二進制表示的變化順序):

 

 

當開啟格子數字為大于31時,比如32,那么所需費用就是2147483647個銀兩,再買點其他物品,湊成超過2147483647的數字,比如又買了3個銀子的其他道具,總共花費2147483650個銀子,在4字節的有符號int中表示出來的結果,變成符號位為1,即負整數。數值位為0000000 00000000 00000000 00000010,也就是10000000 00000000 00000000 00000010,對應十進制的-2147483646。程序邏輯上,再判斷現有銀兩是否足夠支付此筆花費時,是通過的。當使用當前余額減去這筆花費時,將變成減去一個負數,那么實際上就是加上一個正整數。變成了自己銀兩賬戶余額的增長。而余額字段類型是long,則正確的存儲了這些余額,溢出漏洞被利用。在C中,使用無符號的數值類型,即可完成數值類型溢出刷錢的行為,但在java中,好像沒有無符號的類型。這也可以先確定所有參與計算的數值必須為正整數作為必要條件(游戲業務特性,游戲內所有數字,肯定全為正整數,甚至都不包括零),先做大小判斷,再做正正相加,不能得負;負負相加,不能得正。來判斷是否發生了溢出問題。在PHP中,不用擔心溢出問題。

金幣復制-并發請求

Rpg類型的網頁游戲中,多數都有道具出售的功能,直接賣到商店,以及道具材料從商店買入功能。當玩家同時針對買入、賣出兩個操作,瞬間大量并發請求時,在服務器的處理邏輯一般有分別的兩個進程處理,共享數據分別數據庫中的對應賬戶余額表,如下圖:

 

 

webgame買入、賣出并發請求處理

//賣出
// startTrans
$iBalance = $obj->getBalance('user1'); //余額50
//UPDATE `role_gold` SET gold = 150 WHERE role_id = 1
if(!$obj->setBalance('user1',$iBalance + 100))
{
//rollback
}
//扣除物品
if (!$obj->delItems($items))
{
//rollback
}
//commit
//買入
// startTrans
$iBalance = $obj->getBalance('user1'); //余額50
//UPDATE `role_gold` SET gold = 0 WHERE role_id = 1
if(!$obj->setBalance('user1',$iBalance - 50))
{
//rollback
}
//發放物品
if (!$obj->addItems($items))
{
//rollback
}
//commit

賣出請求的處理進程為1,買入請求的處理進程為2。在進程1還沒將結果寫入到DB時,進程2也從DB讀取到余額為50。這是,兩個進程拿到的余額信息都是50。進程1按照邏輯代碼,計算出剩余余額是150;進程2計算出的剩余余額是0。最后,不管那個進程最后寫入余額,都是錯誤的結果。(注:這里的代碼邏輯操作,跟mysql事務無任何關系,事務只能保證單個進程的事務范圍內多條語句都正確執行,或回滾。比如能保證扣錢成功,且物品刪除掉的兩個語句都正確執行。能保證其中之一的語句執行失敗時,都正確回滾。)

其實,在事物開啟時候,SELECT語句是否可以取到最新的數據,或者是否需要等待鎖釋放,取決于MYSQL的事務隔離級別。在MYSQL的事務隔離級別中,有一下幾種隔離級別:

 

 

READ-UNCOMMITTED(讀取未提交內容)級別

READ-COMMITTED(讀取提交內容

REPEATABLE-READ(可重讀)

SERIERLIZED(可串行化)

對于READ-UNCOMMITTED,可以讀取其他事務中未提交的數據,而且據說性能還高不到哪里去,幾乎沒有在實際應用中使用;對于READ-COMMITTED,在同一事務中,會因為其他事務隨時可能有新的commit,導致同一select可能返回不同結果。這個也不適合游戲業務;再說第四個SERIERLIZED,只要事務開啟,所有其他查詢,均排隊等待該事務提交之后,對于上面提到的賣出買入情況,第二個事務的SELECT操作,不會立刻返回,會處于鎖等待狀態,一直到前一個事務結束。這個隔離級別,雖然能避免上面的問題,但性能較差,一般不會去使用。而REPEATABLE-READ隔離級別,也是mysql默認的隔離級別,從功能上,比較符合游戲業務需要,也應該是廣大webgame架構中mysql的默認隔離級別。

對于這個問題,你可能很快就給出解決辦法,把UPDATE語句改為UPDATE `role_gold` SET gold = gold + 100 WHERE role_id = 1或者UPDATE `role_gold` SET gold = 150 WHERE role_id = 1 AND gold = 100來解決,但這種多個事務同時操作修改多個表的多條記錄時,還容易引發死鎖問題,比如《webgame中Mysql Deadlock ERROR 1213 (40001)錯誤的排查歷程》。而且,當條件為跨表內數據是否存在,或者另外條件不在MYSQL中,而在其他網絡接口的響應中時,如何做呢?

金幣復制--邏輯漏洞

引用DNF的漏洞新聞 《利用網游漏洞狂刷游戲幣賺錢 玩家自曝3天賺17萬》

玩家曝出刷幣漏洞 一個游戲道具可刷400人民幣

該漏洞到底是什么?原來游戲中“云冪袖珍罐”這個道具,可以開出2件一樣的游戲裝備,還有極少幾率開出游戲幣,開出的裝備不值錢,但如果開出金幣了,則分為5000萬、8000萬以及1億游戲幣。而1億游戲幣,按正常市場行情,可在交易網上賣400多元人民幣。據玩家稱,在游戲中,角色的裝備是需要用包裹來存放的,不過目前角色的包裹最多只有48格,也就是只能存放最多48件裝備。漏洞就是利用包裹的有限空間,存放47件裝備(存放滿了又無法開罐子),只留下一格空位,而在開“云冪袖珍罐”出裝備時,就會因包裹空間不足,而導致開罐失敗,而罐子還存在。玩家繼續開罐,直到出現金幣,但金幣不會占據包裹的空間,因此開罐成功,然后罐子消失。發現這個漏洞后,部分玩家狂刷游戲幣,然后馬上在第三方交易平臺出售游戲幣,兌換成現金。

這種問題,都是研發人員邏輯不嚴謹導致,這種問題,也較難發現。規避方式可以依賴下面提到的『運營數據監控』。

道具復制--背包整理

跟上面的賣出、買入一樣,同時穿裝備、整理包裹。在設計時,可能會將身上裝備設計在裝備表中;將不在身上的裝備,設計到背包表中。當同時進行穿裝備跟整理包裹的請求并發時,也會發生跟上面賣出,買入的情況,線程1讀取DB,發現包裹里有這裝備,然后準備刪除背包表的這條記錄,當準備寫入到裝備表時,另外一個整理包裹請求的線程來了,讀取了整個背包表,進行道具的合并、排序。這時,之前的線程將這個裝備寫入到裝備表,并刪除了背包表里的數據,并提交事務。這個穿裝備的所有操作都是合理、正常,且正確執行的。但另外一個整理背包的線程讀取了之前的背包表里的數據,包括那件被穿上的裝備。在游戲中,整理背包需要對可堆疊道具做堆疊操作的,意味著需要合并多個道具,刪除部分道具。這意味著這里的操作,當前cgi線程的內存中的數據,將都會以覆蓋的形式,寫入到DB中,那么意味著,之前被穿到身上的那件裝備,也會重新被寫入到背包中。那就變成兩張表里出現了兩個相同唯一ID的相同屬性的道具。玩家就可以把背包中的這個道具出售給其他玩家。

在java或者C之類程序中,數據放內存中的游戲,也會存在這個問題,除非做讀鎖,但讀鎖會帶來鎖等待,鎖等待會導致線程被占用,阻塞后面請求的處理,堆積大量請求。導致系統負載升高,服務器繁忙,以至于無法響應。好了,大約理解道具復制的形成原因了嗎?這個問題,我們從根本原因想想,問題到底出現在哪里?如何規避呢?細心的同學不難發現,對于穿裝備的操作結果,會對下一個請求產生影響的,當前操作未得到服務端響應之前,服務端是不能處理下一個響應的。對此,我們做了響應處理鎖--『用戶并發請求鎖』。

用戶并發請求鎖的實現,php中session以文件形式存儲時,php會對session文件加鎖,不釋放(如果不特意執行session_write_close),知道當前響應完成。另外一個線程才可以正常讀取,這簡介的形成了單個用戶的并發請求鎖,但是,后面的進程一直處于等待狀態,也會占用一個php-fpm進程,阻塞其他用戶的正常請求對php線程的使用。為此,我們使用NOSQL的K-V形式結構,以user_name為key的形式,實現用戶并發請求鎖,第一個請求,生成這個k-v數據,后一個請求發現有這個key了,那么立刻拋出異常,結束響應,FLASH根據異常內容,提醒用戶不要進行惡意操作。即不會發生并發請求,又不會阻塞請求處理。同時,在請求結束的析構函數里,對這個鎖進行刪除操作,不影響下一個正常請求。若因為程序異常,發生語法錯誤,導致析構函數沒法執行,沒有刪除用戶鎖時,可以在生成鎖的時候,設置過期時間,比如5秒,甚至2秒,利用nosql的過期機制,實現用戶解鎖,避免用戶長時間無法正常游戲。

類CC攻擊-多用戶共享資源鎖的timebomb

我們現在研發的項目,是以NOSQL Redis作為DB,來存儲數據的,redis并沒有成熟的事務處理機制,watch甚至算不上關系型數據庫中的事務處理。對此,更需要對表進行加鎖解鎖。java之類語言的項目,很多都是直接操作內存的,更是需要資源鎖,來解決并發問題,解決多個請求操作同一份數據的問題。公司有另外一個項目,出現過一次因為鎖的顆粒度較大,帶來的鎖等待timebomb的問題,也導致了線程繁阻塞忙,請求堆積,系統負載上升,導致宕機的問題。這個項目的鎖是針對所有用戶的鎖,每個用戶的請求發來時,當前線程會對所有用戶的數據加鎖,直到響應完成,才釋放掉。這么做,是為了解決因當前操作,會影響到其他用戶數據,比如多人PK,多個玩家之間的交互。

 

 

當其他請求一并發來時,那么資源會立刻被鎖住,直到上一個請求結束,才釋放鎖,那么其他線程都處于等待狀態。用戶基數小時,是看不出來鎖帶來的影響的,內存操作都比較快。當用戶基數大時,或者說請求數增大時,后面的請求的等待時間會越來越長,超過webserver的等待時間,直接返回timeout,不能正常提供服務。

這種問題的發生,是因為鎖的顆粒太大了,不應該將所有用戶都鎖住,最好細化到當前請求所影響到的單個用戶,只鎖住單個用戶的數據。這樣,才減少timebomb的發生。

其他

知乎里的朋友提到,很多webgame 的前端做了判斷,而后端沒做判斷的問題,這種問題,實屬不該存在。在我們的項目中,后端做的驗證判斷,遠比前端多的多。有時候,為了界面上的動畫表現,前端flash一般會在用戶操作之后,立刻渲染,然后,再根據后端響應,決定是否繼續做界面元素改動。比如脫裝備,玩家操作時,會先渲染裝備從角色面板,跳到背包里的動畫,然后,再根據后端響應結果,決定是否回滾動畫。這樣,避免顯得操作后,一定時間的反映遲鈍假象,以提高用戶體驗。當然,后端是一定會做判斷的,判斷角色背包是否有空格之類。現在的webgame研發,一般都不會存在前端判斷,而后端不判斷的做法了。如果有,也應該是個別遺漏情況。

比如去年的time33算法的hash dos的問題,使用json消息格式的webgame一定要注意,php只是在接收請求時,做了最大數量的限制。但在json解碼之后的數據中,是沒有處理的。這里千萬別忘記了。

運營數據異常監控

再完善的防御措施,都仍會有安全漏洞。適當的監控措施,也一定要有,監控等級、金幣、游戲幣、經驗、珍貴物品的變化等等,一旦發現,立刻報警,在漏洞未擴散之前,第一時間去修復漏洞,以減少損失,維護游戲平衡。

日志系統

日志系統一定不能漏掉,所有操作,必須寫入日志,當安全事件發生后,可以作為各種數據回滾,交易糾紛處理的可靠數據。也是作為數據監控的最準確的數據來源。

如果你用了我畫的小清新般的插圖,請記得為圖片寫上署名來源,畫圖是最花費我時間的一件事。

覺得文章有用?立即: 和朋友一起 共學習 共進步!

責任編輯:藍雨淚 來源: 中關村在線
相關推薦

2021-03-13 20:45:11

安全Web策略

2012-10-29 10:36:23

安全問題掃描策略云安全

2012-07-09 09:41:43

2019-04-04 11:55:59

2020-10-30 08:50:25

2023-06-14 11:59:55

2009-12-23 16:10:14

2022-02-24 09:00:00

AD安全漏洞

2021-04-22 21:58:51

云計算IaaS安全

2023-07-14 08:50:37

2021-04-21 11:10:31

云存儲云安全數據泄露

2021-04-20 10:54:47

云計算IaaS安全云安全

2021-08-02 18:08:53

網站安全SQL技術

2017-03-14 13:39:08

2015-03-19 09:36:39

2020-04-10 08:34:58

網絡安全郵件安全網絡釣魚

2010-09-13 13:37:59

2019-02-27 07:35:01

惡意軟件數據泄露網絡防御

2013-04-02 13:06:20

BYODBYOD安全

2012-11-01 11:02:44

點贊
收藏

51CTO技術棧公眾號

我要色综合中文字幕| 国内精品久久久久国产| 视频一区二区不卡| 在线看日韩欧美| 中文字幕视频三区| 91国内在线| 成人av手机在线观看| 日韩av黄色在线观看| 久艹在线观看视频| 国产精品一区二区三区美女| 91久久久免费一区二区| 99热一区二区三区| 污视频在线免费| 久久国产剧场电影| 97人人爽人人喊人人模波多 | 国产专区欧美精品| 国模视频一区二区三区| 免费一级特黄3大片视频| 精品成人18| 在线观看网站黄不卡| 糖心vlog在线免费观看| 高清性色生活片在线观看| 国产精品18久久久久久久久久久久| 欧美专区在线观看| 欧美日韩在线视频免费| 精品毛片免费观看| 精品粉嫩超白一线天av| 中文av字幕在线观看| 日韩脚交footjobhdboots| 亚洲欧美成aⅴ人在线观看| 日产精品一线二线三线芒果| 亚洲精华国产精华精华液网站| 日产国产欧美视频一区精品| 91精品国产精品| 久久久精品91| 婷婷亚洲综合| 最好看的2019年中文视频| 青青草视频播放| 澳门成人av| 欧美日韩激情在线| 99久久国产宗和精品1上映 | 97国产在线视频| 欧美成人三级视频| 91精品一区二区三区综合在线爱| 亚洲午夜色婷婷在线| 亚洲中文字幕一区| 高清日韩中文字幕| 日韩欧美美女一区二区三区| 五月天婷婷在线观看视频| 精品欧美日韩精品| 色94色欧美sute亚洲线路一久| 免费在线观看亚洲视频| 岛国av在线播放| 亚洲国产日韩在线一区模特| 国产精品国三级国产av| 1区2区在线观看| 亚洲精品va在线观看| 7777在线视频| 中文国产字幕在线观看| 亚洲伦在线观看| 可以在线看黄的网站| 18在线观看的| 亚洲国产精品久久久男人的天堂| 真人做人试看60分钟免费| 成人影欧美片| 一区二区久久久久| 黄色激情在线视频| sm性调教片在线观看| 欧美日韩亚洲国产一区| 免费在线观看的毛片| 播放一区二区| 这里是久久伊人| 国产精品二区视频| 狼人天天伊人久久| 国产性猛交xxxx免费看久久| 黄色片网站在线播放| 亚洲国产成人精品女人| 欧美大片免费观看| 久久99精品波多结衣一区| 久久久夜夜夜| 成人激情在线播放| 亚洲欧美激情另类| 久久色在线观看| 亚洲欧美日韩国产成人综合一二三区 | 久草热8精品视频在线观看| 国产精品影片在线观看| 国产精品探花视频| 不卡电影免费在线播放一区| 欧洲精品久久| 成人av黄色| 狠狠做深爱婷婷久久综合一区 | 韩国一区二区三区| 国产欧美日韩一区| 国产午夜精品一区理论片| 成人免费在线播放视频| 丰满的少妇愉情hd高清果冻传媒| 26uuu亚洲电影| 欧美精品色综合| 亚洲国产果冻传媒av在线观看| 日本一区二区在线看| 欧美高清videos高潮hd| 一级一片免费看| 国产成人一区在线| 日韩久久久久久久| 超碰在线网站| 欧美又粗又大又爽| 国产精品成人无码专区| 日本成人小视频| 韩国v欧美v日本v亚洲| 一级α片免费看刺激高潮视频| 成人免费不卡视频| 一区二区三区三区在线| 夜鲁夜鲁夜鲁视频在线播放| 日韩一区和二区| 无码人妻精品一区二区中文| 国产综合网站| 国产在线视频欧美| 欧美一区二区少妇| 亚洲综合色在线| 亚洲精品久久久久久宅男| 亚洲黄页网站| 国内精品视频在线| 国产91视频在线| 国产精品毛片高清在线完整版| 91av资源网| 国产精品久av福利在线观看| 久久影视免费观看| 欧美成人精品网站| 97se亚洲国产综合自在线不卡| 国产小视频免费| 日韩成人免费av| 这里只有精品在线播放| 国产69精品久久久久久久久久| 国产成人一级电影| 成人性做爰片免费视频| 四虎国产精品成人免费影视| 亚洲一级黄色片| 狠狠人妻久久久久久| www.日韩大片| 亚洲人精品午夜射精日韩| 成人福利一区| 欧美精品久久久久久久免费观看 | 国产在线视频你懂的| 国产在线不卡一卡二卡三卡四卡| 在线看无码的免费网站| 青青久久精品| 精品国产一区久久久| 亚洲天堂手机在线| 国产精品福利电影一区二区三区四区| 玩弄japan白嫩少妇hd| 嫩草一区二区三区| 国产成人精品免高潮费视频| 免费在线性爱视频| 在线亚洲免费视频| 免费一级黄色录像| 免费在线一区观看| 制服国产精品| 国产成人视屏| 九九热精品视频在线播放| 精品人妻少妇AV无码专区| 亚洲欧美电影院| 亚洲成a人片在线www| 亚洲激情自拍| 六月婷婷久久| 韩日一区二区| 超薄丝袜一区二区| 亚洲福利在线观看视频| 五月天欧美精品| av无码av天天av天天爽| 日日摸夜夜添夜夜添国产精品| 日韩福利影院| 国产一区二区三区免费观看在线 | 成人综合婷婷国产精品久久免费| 国产二区视频在线| 国内成人精品| 91久久久久久久久久| 久久av色综合| 亚洲深夜福利在线| 国产精品女人久久久| 亚洲一区二区成人在线观看| 欧美特黄一区二区三区| 老司机精品视频一区二区三区| 97在线免费视频观看| 欧美国产极品| 91久久夜色精品国产网站| 丁香花在线高清完整版视频| 亚洲免费一级电影| 国产麻豆精品一区| 欧美日韩国产中文精品字幕自在自线| 国产高潮呻吟久久| 国产精品99久| 91淫黄看大片| 欧美日本不卡高清| 欧美大香线蕉线伊人久久国产精品 | 日中文字幕在线| 7777精品久久久大香线蕉| 成人精品在线看| 亚洲欧洲日韩女同| 人妻无码中文久久久久专区| 青青草97国产精品免费观看无弹窗版| 国产成人一二三区| 奇米狠狠一区二区三区| αv一区二区三区| 朝桐光一区二区| 国产综合在线视频| 男人的天堂在线视频免费观看| 亚洲二区在线播放视频| 国产剧情久久久| 91福利视频久久久久| 中文字幕第28页| 亚洲欧洲99久久| 久久精品无码一区| av在线播放一区二区三区| 国产大片一区二区三区| 丝瓜av网站精品一区二区| 日本香蕉视频在线观看| 99re久久最新地址获取| 欧美日韩系列| 日韩av黄色在线| 国产精品久久国产精品| 国产精品亚洲综合在线观看| 国产精品久久久久久久美男| 黄毛片在线观看| 欧美极品在线视频| 黄色的网站在线观看| 一区二区欧美亚洲| 日本在线视频1区| 精品成人在线观看| 午夜免费福利视频| 91精品婷婷国产综合久久性色 | 日韩亚洲国产中文字幕欧美| 一区二区三区在线免费观看视频| 日韩欧美亚洲成人| 五月天婷婷久久| 精品女厕一区二区三区| 国产无套粉嫩白浆内谢| 一区二区三区.www| 国产这里有精品| 亚洲精品视频在线看| www.av成人| 亚洲色欲色欲www| 人人澡人人澡人人看欧美| 极品人妻一区二区三区| 99久久99久久综合| 亚洲激情 欧美| 成人动漫av在线| 久久久久国产免费| 成人丝袜高跟foot| 永久免费未满蜜桃| 成人av在线资源网站| 亚洲天堂资源在线| 26uuu国产日韩综合| 50一60岁老妇女毛片| 99久久精品费精品国产一区二区| 国产精品一区二区人妻喷水| 95精品视频在线| 强伦人妻一区二区三区| 国产午夜精品一区二区| 农村老熟妇乱子伦视频| 国产精品传媒视频| 国产盗摄一区二区三区在线| 悠悠色在线精品| 日韩经典在线观看| 色综合天天视频在线观看| 69视频免费看| 欧美日韩国产在线观看| 国产美女永久免费| 欧美精品一区二区三区一线天视频 | 蜜桃久久av| 国产视频1区2区3区| 国产一区不卡视频| 午夜免费福利影院| 久久―日本道色综合久久| 激情五月深爱五月| 亚洲精品精品亚洲| 天天操天天操天天操天天| 欧美性极品少妇| 精品人妻少妇AV无码专区| 日韩电影中文字幕一区| 成年人在线观看视频| 欧美精品日韩三级| 国产美女高潮在线| 日本久久精品视频| **日韩最新| 精品一区二区三区自拍图片区| 欧美日韩国产传媒| 九一免费在线观看| 日韩精品1区2区3区| 中文字幕一区二区在线观看视频 | 欧美久久电影| 国产精品99久久久久久动医院| 亚洲色成人www永久在线观看| 日韩精品亚洲一区| 好吊操视频这里只有精品| 久久久久九九视频| 全程偷拍露脸中年夫妇| 色噜噜偷拍精品综合在线| 精品国精品国产自在久不卡| 亚洲欧美在线免费| 久久99亚洲网美利坚合众国| 国产精品视频白浆免费视频| 超碰97久久国产精品牛牛| 亚洲精品乱码视频| aa国产精品| www.日本久久| 中文字幕欧美三区| 日本高清www免费视频| 欧美男男青年gay1069videost| 天堂在线视频免费| 久久影院中文字幕| 日韩在线短视频| 精品久久久久久中文字幕动漫| 97视频热人人精品免费| 男人操女人免费软件| 国产91丝袜在线播放九色| 99自拍偷拍视频| 色婷婷国产精品综合在线观看| 亚洲va天堂va欧美ⅴa在线| 最近2019中文字幕在线高清 | 色婷婷一区二区三区四区| 精品女同一区二区三区| 久久久999精品免费| 国产综合av| 欧美精品欧美精品| 99riav国产精品| 在线中文字日产幕| 亚洲精品视频在线观看免费| 在线免费观看av片| 国产午夜精品美女视频明星a级| 国产精品xx| 国产一区二区三区av在线| 国产精品v亚洲精品v日韩精品 | 久久久久综合网| 欧美一二三区视频| 亚洲国内高清视频| 国产丝袜精品丝袜| 操一操视频一区| 亚洲视频一二| 野花视频免费在线观看| 亚洲码国产岛国毛片在线| 国产美女主播在线观看| 久久久国产一区| 国产高清日韩| a级网站在线观看| 国产成人亚洲综合a∨婷婷图片 | 香蕉视频在线播放| 国产精品日日做人人爱| 成人毛片在线| 亚欧激情乱码久久久久久久久| 欧美国产精品中文字幕| 国产精品无码粉嫩小泬| 在线电影av不卡网址| 黄色成人小视频| 中文字幕在线亚洲精品 | 成人在线激情视频| 亚洲最新色图| 国产免费a级片| 精品国产精品自拍| 秋霞av在线| 国产精品一区二区电影| 亚洲成av人电影| 国产xxxx视频| 懂色av中文一区二区三区天美| 久草在线免费福利资源| 国产精品久久久久秋霞鲁丝| 天天射成人网| 91精品又粗又猛又爽| 第一福利永久视频精品| 成人三级黄色免费网站| 91精品久久久久| 欧美三级小说| 成年人在线观看av| 欧美日韩免费高清一区色橹橹| av软件在线观看| 久久99精品久久久久久久青青日本| 久久精品日产第一区二区 | 性xxxx视频| 国产精品天天狠天天看| 欧美日韩免费观看一区=区三区| 成人手机在线免费视频| 欧美天堂一区二区三区| 午夜av在线免费观看| 蜜桃传媒视频麻豆第一区免费观看| 男女男精品网站| 久久综合久久鬼| 亚洲美女喷白浆| 精品国模一区二区三区欧美 | 亚洲电影观看| 在线观看欧美激情| 99久久国产综合精品麻豆| 91尤物国产福利在线观看| 久久久久久久香蕉网| 日本久久黄色| 亚洲中文字幕无码一区| 欧美日本在线观看| 牛牛精品一区二区| 一区二区国产日产| 91蜜桃传媒精品久久久一区二区| 亚洲最新av网站| 青草青草久热精品视频在线观看|