久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

確保php應用程序的安全-不能違反的四條安全規則

瀏覽:4日期:2024-02-15 11:33:34

規則 1:絕不要信任外部數據或輸入

關于 Web 應用程序安全性,必須認識到的第一件事是不應該信任外部數據。外部數據(outside data) 包括不是由程序員在 PHP 代碼中直接輸入的任何數據。在采取措施確保安全之前,來自任何其他來源(比如 GET 變量、表單 POST、數據庫、配置文件、會話變量或 cookie)的任何數據都是不可信任的。

例如,下面的數據元素可以被認為是安全的,因為它們是在 PHP 中設置的。

清單 1. 安全無暇的代碼

<?php$myUsername = 'tmyer';$arrayUsers = array('tmyer', 'tom', 'tommy');define('GREETING', 'hello there' . $myUsername);?>

但是,下面的數據元素都是有瑕疵的。

清單 2. 不安全、有瑕疵的代碼

<?php$myUsername = $_POST['username']; //tainted!$arrayUsers = array($myUsername, 'tom', 'tommy'); //tainted!define('GREETING', 'hello there' . $myUsername); //tainted!?>

為 什么第一個變量 $myUsername 是有瑕疵的?因為它直接來自表單 POST。用戶可以在這個輸入域中輸入任何字符串,包括用來清除文件或運行以前上傳的文件的惡意命令。您可能會問,“難道不能使用只接受字母 A-Z 的客戶端(Javascrīpt)表單檢驗腳本來避免這種危險嗎?”是的,這總是一個有好處的步驟,但是正如在后面會看到的,任何人都可以將任何表單下載 到自己的機器上,修改它,然后重新提交他們需要的任何內容。

解決方案很簡單:必須對 $_POST['username'] 運行清理代碼。如果不這么做,那么在使用 $myUsername 的任何其他時候(比如在數組或常量中),就可能污染這些對象。

對用戶輸入進行清理的一個簡單方法是,使用正則表達式來處理它。在這個示例中,只希望接受字母。將字符串限制為特定數量的字符,或者要求所有字母都是小寫的,這可能也是個好主意。

清單 3. 使用戶輸入變得安全

<?php$myUsername = cleanInput($_POST['username']); //clean!$arrayUsers = array($myUsername, 'tom', 'tommy'); //clean!define('GREETING', 'hello there' . $myUsername); //clean!

function cleanInput($input){ $clean = strtolower($input); $clean = preg_replace('/[^a-z]/', '', $clean); $clean = substr($clean,0,12); return $clean;}?>

規則 2:禁用那些使安全性難以實施的 PHP 設置

已經知道了不能信任用戶輸入,還應該知道不應該信任機器上配置 PHP 的方式。例如,要確保禁用 register_globals。如果啟用了 register_globals,就可能做一些粗心的事情,比如使用 $variable 替換同名的 GET 或 POST 字符串。通過禁用這個設置,PHP 強迫您在正確的名稱空間中引用正確的變量。要使用來自表單 POST 的變量,應該引用 $_POST['variable']。這樣就不會將這個特定變量誤會成 cookie、會話或 GET 變量。

規則 3:如果不能理解它,就不能保護它

一些開發人員使用奇怪的語法,或者將語句組織得很緊湊,形成簡短但是含義模糊的代碼。這種方式可能效率高,但是如果您不理解代碼正在做什么,那么就無法決定如何保護它。

例如,您喜歡下面兩段代碼中的哪一段?

清單 4. 使代碼容易得到保護

<?php //obfuscated code$input = (isset($_POST['username']) ? $_POST['username']:'');

//unobfuscated code$input = '';

if (isset($_POST['username'])){ $input = $_POST['username'];}else{ $input = '';}?>

在第二個比較清晰的代碼段中,很容易看出 $input 是有瑕疵的,需要進行清理,然后才能安全地處理。

規則 4:“縱深防御” 是新的法寶

本教程將用示例來說明如何保護在線表單,同時在處理表單的 PHP 代碼中采用必要的措施。同樣,即使使用 PHP regex 來確保 GET 變量完全是數字的,仍然可以采取措施確保 SQL 查詢使用轉義的用戶輸入。

縱深防御不只是一種好思想,它可以確保您不會陷入嚴重的麻煩。

既然已經討論了基本規則,現在就來研究第一種威脅:SQL 注入攻擊。

防止 SQL 注入攻擊

在 SQL 注入攻擊 中,用戶通過操縱表單或 GET 查詢字符串,將信息添加到數據庫查詢中。例如,假設有一個簡單的登錄數據庫。這個數據庫中的每個記錄都有一個用戶名字段和一個密碼字段。構建一個登錄表單,讓用戶能夠登錄。

清單 5. 簡單的登錄表單

<html><head><title>Login</title></head><body><form action='verify.php' method='post'><p><label for='user'>Username</label><input type='text' name='user' /></p><p><label for='pw'>Password</label><input type='password' name='pw' /></p><p><input type='submit' value='login'/></p></form></body></html>

這個表單接受用戶輸入的用戶名和密碼,并將用戶輸入提交給名為 verify.php 的文件。在這個文件中,PHP 處理來自登錄表單的數據,如下所示:

清單 6. 不安全的 PHP 表單處理代碼

<?php$okay = 0;$username = $_POST['user'];$pw = $_POST['pw'];

$sql = 'select count(*) as ctr from users where username=''.$username.'' and password=''. $pw.'' limit 1';

$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){ if ($data->ctr == 1){ //they're okay to enter the application! $okay = 1; }}

if ($okay){ $_SESSION['loginokay'] = true; header('index.php');}else{ header('login.php');}?>

這 段代碼看起來沒問題,對嗎?世界各地成百(甚至成千)的 PHP/MySQL 站點都在使用這樣的代碼。它錯在哪里?好,記住 “不能信任用戶輸入”。這里沒有對來自用戶的任何信息進行轉義,因此使應用程序容易受到攻擊。具體來說,可能會出現任何類型的 SQL 注入攻擊。

例如,如果用戶輸入 foo 作為用戶名,輸入 ' or '1'='1 作為密碼,那么實際上會將以下字符串傳遞給 PHP,然后將查詢傳遞給 MySQL:

<?php $sql = 'select count(*) as ctr; from users where username='foo' and password='' or '1'='1' limit 1'; ?>

這個查詢總是返回計數值 1,因此 PHP 會允許進行訪問。通過在密碼字符串的末尾注入某些惡意 SQL,黑客就能裝扮成合法的用戶。

解 決這個問題的辦法是,將 PHP 的內置 mysql_real_escape_string() 函數用作任何用戶輸入的包裝器。這個函數對字符串中的字符進行轉義,使字符串不可能傳遞撇號等特殊字符并讓 MySQL 根據特殊字符進行操作。清單 7 展示了帶轉義處理的代碼。

清單 7. 安全的 PHP 表單處理代碼

<?php$okay = 0;$username = $_POST['user'];$pw = $_POST['pw'];

$sql = 'select count(*) as ctr from users where username=''.mysql_real_escape_string($username).'' and password=''. mysql_real_escape_string($pw).'' limit 1';

$result = mysql_query($sql);

while ($data = mysql_fetch_object($result)){ if ($data->ctr == 1){ //they're okay to enter the application! $okay = 1; }}

if ($okay){ $_SESSION['loginokay'] = true; header('index.php');}else{ header('login.php');}?>

使用 mysql_real_escape_string() 作為用戶輸入的包裝器,就可以避免用戶輸入中的任何惡意 SQL 注入。如果用戶嘗試通過 SQL 注入傳遞畸形的密碼,那么會將以下查詢傳遞給數據庫:

select count(*) as ctr from users where username='foo' and password='' or '1'='1' limit 1'

數據庫中沒有任何東西與這樣的密碼匹配。僅僅采用一個簡單的步驟,就堵住了 Web 應用程序中的一個大漏洞。這里得出的經驗是,總是應該對 SQL 查詢的用戶輸入進行轉義。

但是,還有幾個安全漏洞需要堵住。下一項是操縱 GET 變量。

防止用戶操縱 GET 變量

在前一節中,防止了用戶使用畸形的密碼進行登錄。如果您很聰明,應該應用您學到的方法,確保對 SQL 語句的所有用戶輸入進行轉義。

但 是,用戶現在已經安全地登錄了。用戶擁有有效的密碼,并不意味著他將按照規則行事 —— 他有很多機會能夠造成損害。例如,應用程序可能允許用戶查看特殊的內容。所有鏈接指向 template.php?pid=33 或 template.php?pid=321 這樣的位置。URL 中問號后面的部分稱為查詢字符串。因為查詢字符串直接放在 URL 中,所以也稱為 GET 查詢字符串。

在 PHP 中,如果禁用了 register_globals,那么可以用 $_GET['pid'] 訪問這個字符串。在 template.php 頁面中,可能會執行與清單 8 相似的操作。

清單 8. 示例 template.php

<?php$pid = $_GET['pid'];

//we create an object of a fictional class Page$obj = new Page;$content = $obj->fetchPage($pid);//and now we have a bunch of PHP that displays the page?>

這 里有什么錯嗎?首先,這里隱含地相信來自瀏覽器的 GET 變量 pid 是安全的。這會怎么樣呢?大多數用戶沒那么聰明,無法構造出語義攻擊。但是,如果他們注意到瀏覽器的 URL 位置域中的 pid=33,就可能開始搗亂。如果他們輸入另一個數字,那么可能沒問題;但是如果輸入別的東西,比如輸入 SQL 命令或某個文件的名稱(比如 /etc/passwd),或者搞別的惡作劇,比如輸入長達 3,000 個字符的數值,那么會發生什么呢?

在這種情況下,要記住基本規則,不要信任用戶輸入。應用程序開發人員知道 template.php 接受的個人標識符(PID)應該是數字,所以可以使用 PHP 的 is_numeric() 函數確保不接受非數字的 PID,如下所示:

清單 9. 使用 is_numeric() 來限制 GET 變量

<?php$pid = $_GET['pid'];

if (is_numeric($pid)){ //we create an object of a fictional class Page $obj = new Page; $content = $obj->fetchPage($pid); //and now we have a bunch of PHP that displays the page}else{ //didn't pass the is_numeric() test, do something else!}?>

這個方法似乎是有效的,但是以下這些輸入都能夠輕松地通過 is_numeric() 的檢查:

100 (有效)100.1 (不應該有小數位)+0123.45e6 (科學計數法 —— 不好)0xff33669f (十六進制 —— 危險!危險!)

那么,有安全意識的 PHP 開發人員應該怎么做呢?多年的經驗表明,最好的做法是使用正則表達式來確保整個 GET 變量由數字組成,如下所示:

清單 10. 使用正則表達式限制 GET 變量

<?php$pid = $_GET['pid'];

if (strlen($pid)){ if (!ereg('^[0-9]+$',$pid)){ //do something appropriate, like maybe logging them out or sending them back to home page }}else{ //empty $pid, so send them back to the home page}

//we create an object of a fictional class Page, which is now//moderately protected from evil user input$obj = new Page;$content = $obj->fetchPage($pid);//and now we have a bunch of PHP that displays the page?>

需 要做的只是使用 strlen() 檢查變量的長度是否非零;如果是,就使用一個全數字正則表達式來確保數據元素是有效的。如果 PID 包含字母、斜線、點號或任何與十六進制相似的內容,那么這個例程捕獲它并將頁面從用戶活動中屏蔽。如果看一下 Page 類幕后的情況,就會看到有安全意識的 PHP 開發人員已經對用戶輸入 $pid 進行了轉義,從而保護了 fetchPage() 方法,如下所示:

清單 11. 對 fetchPage() 方法進行轉義

<?phpclass Page{ function fetchPage($pid){ $sql = 'select pid,title,desc,kw,content,status from page where pid=''.mysql_real_escape_string($pid).'''; }}?>

您可能會問,“既然已經確保 PID 是數字,那么為什么還要進行轉義?” 因為不知道在多少不同的上下文和情況中會使用 fetchPage() 方法。必須在調用這個方法的所有地方進行保護,而方法中的轉義體現了縱深防御的意義。

如 果用戶嘗試輸入非常長的數值,比如長達 1000 個字符,試圖發起緩沖區溢出攻擊,那么會發生什么呢?下一節更詳細地討論這個問題,但是目前可以添加另一個檢查,確保輸入的 PID 具有正確的長度。您知道數據庫的 pid 字段的最大長度是 5 位,所以可以添加下面的檢查。

清單 12. 使用正則表達式和長度檢查來限制 GET 變量

<?php$pid = $_GET['pid'];

if (strlen($pid)){ if (!ereg('^[0-9]+$',$pid) && strlen($pid) > 5){ //do something appropriate, like maybe logging them out or sending them back to home page }} else { //empty $pid, so send them back to the home page} //we create an object of a fictional class Page, which is now //even more protected from evil user input $obj = new Page; $content = $obj->fetchPage($pid); //and now we have a bunch of PHP that displays the page?>

現在,任何人都無法在數據庫應用程序中塞進一個 5,000 位的數值 —— 至少在涉及 GET 字符串的地方不會有這種情況。想像一下黑客在試圖突破您的應用程序而遭到挫折時咬牙切齒的樣子吧!而且因為關閉了錯誤報告,黑客更難進行偵察。

緩沖區溢出攻擊

緩沖區溢出攻擊 試圖使 PHP 應用程序中(或者更精確地說,在 Apache 或底層操作系統中)的內存分配緩沖區發生溢出。請記住,您可能是使用 PHP 這樣的高級語言來編寫 Web 應用程序,但是最終還是要調用 C(在 Apache 的情況下)。與大多數低級語言一樣,C 對于內存分配有嚴格的規則。

緩沖區溢出攻擊向緩沖區發送大量數據,使部分數據溢出到相鄰的內存緩沖區,從而破壞緩沖區或者重寫邏輯。這樣就能夠造成拒絕服務、破壞數據或者在遠程服務器上執行惡意代碼。

防止緩沖區溢出攻擊的惟一方法是檢查所有用戶輸入的長度。例如,如果有一個表單元素要求輸入用戶的名字,那么在這個域上添加值為 40 的 maxlength 屬性,并在后端使用 substr() 進行檢查。清單 13 給出表單和 PHP 代碼的簡短示例。

清單 13. 檢查用戶輸入的長度

<?phpif ($_POST['submit'] == 'go'){ $name = substr($_POST['name'],0,40);}?>

<form action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'><p><label for='name'>Name</label><input type='text' name='name' size='20' maxlength='40'/></p><p><input type='submit' name='submit' value='go'/></p></form>

為 什么既提供 maxlength 屬性,又在后端進行 substr() 檢查?因為縱深防御總是好的。瀏覽器防止用戶輸入 PHP 或 MySQL 不能安全地處理的超長字符串(想像一下有人試圖輸入長達 1,000 個字符的名稱),而后端 PHP 檢查會確保沒有人遠程地或者在瀏覽器中操縱表單數據。

正如您看到的,這種方式與前一節中使用 strlen() 檢查 GET 變量 pid 的長度相似。在這個示例中,忽略長度超過 5 位的任何輸入值,但是也可以很容易地將值截短到適當的長度,如下所示:

清單 14. 改變輸入的 GET 變量的長度

<?php$pid = $_GET['pid'];

if (strlen($pid)){ if (!ereg('^[0-9]+$',$pid)){ //if non numeric $pid, send them back to home page }}else{ //empty $pid, so send them back to the home page}

//we have a numeric pid, but it may be too long, so let's check if (strlen($pid)>5){ $pid = substr($pid,0,5); }

//we create an object of a fictional class Page, which is now //even more protected from evil user input $obj = new Page; $content = $obj->fetchPage($pid); //and now we have a bunch of PHP that displays the page?>

注 意,緩沖區溢出攻擊并不限于長的數字串或字母串。也可能會看到長的十六進制字符串(往往看起來像 xA3 或 xFF)。記住,任何緩沖區溢出攻擊的目的都是淹沒特定的緩沖區,并將惡意代碼或指令放到下一個緩沖區中,從而破壞數據或執行惡意代碼。對付十六進制緩 沖區溢出最簡單的方法也是不允許輸入超過特定的長度。

如果您處理的是允許在數據庫中輸入較長條目的表單文本區,那么無法在客戶端輕松地限制數據的長度。在數據到達 PHP 之后,可以使用正則表達式清除任何像十六進制的字符串。

清單 15. 防止十六進制字符串

<?phpif ($_POST['submit'] == 'go'){ $name = substr($_POST['name'],0,40); //clean out any potential hexadecimal characters $name = cleanHex($name); //continue processing....}

function cleanHex($input){ $clean = preg_replace('![][xX]([A-Fa-f0-9]{1,3})!', '',$input); return $clean; }?><form action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'><p><label for='name'>Name</label><input type='text' name='name' size='20' maxlength='40'/></p><p><input type='submit' name='submit' value='go'/></p></form>

您 可能會發現這一系列操作有點兒太嚴格了。畢竟,十六進制串有合法的用途,比如輸出外語中的字符。如何部署十六進制 regex 由您自己決定。比較好的策略是,只有在一行中包含過多十六進制串時,或者字符串的字符超過特定數量(比如 128 或 255)時,才刪除十六進制串。

跨站點腳本攻擊

在跨站點腳本(XSS)攻擊中,往往有一個惡意用戶在表單中(或通過其他用戶輸入方式)輸入信息,這些輸入將惡 意的客戶端標記插入過程或數據庫中。例如,假設站點上有一個簡單的來客登記簿程序,讓訪問者能夠留下姓名、電子郵件地址和簡短的消息。惡意用戶可以利用這 個機會插入簡短消息之外的東西,比如對于其他用戶不合適的圖片或將用戶重定向到另一個站點的 Javascrīpt,或者竊取 cookie 信息。

幸運的是,PHP 提供了 strip_tags() 函數,這個函數可以清除任何包圍在 HTML 標記中的內容。strip_tags() 函數還允許提供允許標記的列表,比如 <b> 或 <i>。

瀏覽器內的數據操縱

有一類瀏覽器插件允許用戶篡改頁面上的頭部元素和表單元素。使用 Tamper Data(一個 Mozilla 插件),可以很容易地操縱包含許多隱藏文本字段的簡單表單,從而向 PHP 和 MySQL 發送指令。

用戶在點擊表單上的 Submit 之前,他可以啟動 Tamper Data。在提交表單時,他會看到表單數據字段的列表。Tamper Data 允許用戶篡改這些數據,然后瀏覽器完成表單提交。

讓我們回到前面建立的示例。已經檢查了字符串長度、清除了 HTML 標記并刪除了十六進制字符。但是,添加了一些隱藏的文本字段,如下所示:

清單 17. 隱藏變量

<?phpif ($_POST['submit'] == 'go'){ //strip_tags $name = strip_tags($_POST['name']); $name = substr($name,0,40); //clean out any potential hexadecimal characters $name = cleanHex($name); //continue processing....}

function cleanHex($input){ $clean = preg_replace('![][xX]([A-Fa-f0-9]{1,3})!', '',$input); return $clean;}?><form action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'><p><label for='name'>Name</label><input type='text' name='name' size='20' maxlength='40'/></p><input type='hidden' name='table' value='users'/><input type='hidden' name='action' value='create'/><input type='hidden' name='status' value='live'/><p><input type='submit' name='submit' value='go'/></p></form>

注意,隱藏變量之一暴露了表名:users。還會看到一個值為 create 的 action 字段。只要有基本的 SQL 經驗,就能夠看出這些命令可能控制著中間件中的一個 SQL 引擎。想搞大破壞的人只需改變表名或提供另一個選項,比如 delete。

現在還剩下什么問題呢?遠程表單提交。

遠程表單提交

Web 的好處是可以分享信息和服務。壞處也是可以分享信息和服務,因為有些人做事毫無顧忌。

以 表單為例。任何人都能夠訪問一個 Web 站點,并使用瀏覽器上的 File > Save As 建立表單的本地副本。然后,他可以修改 action 參數來指向一個完全限定的 URL(不指向 formHandler.php,而是指向 http://www.yoursite.com/formHandler.php,因為表單在這個站點上),做他希望的任何修改,點擊 Submit,服務器會把這個表單數據作為合法通信流接收。

首先可能考慮檢查 $_SERVER['HTTP_REFERER'],從而判斷請求是否來自自己的服務器,這種方法可以擋住大多數惡意用戶,但是擋不住最高明的黑客。這些人足夠聰明,能夠篡改頭部中的引用者信息,使表單的遠程副本看起來像是從您的服務器提交的。

處理遠程表單提交更好的方式是,根據一個惟一的字符串或時間戳生成一個令牌,并將這個令牌放在會話變量和表單中。提交表單之后,檢查兩個令牌是否匹配。如果不匹配,就知道有人試圖從表單的遠程副本發送數據。

要創建隨機的令牌,可以使用 PHP 內置的 md5()、uniqid() 和 rand() 函數,如下所示:

清單 18. 防御遠程表單提交

<?phpsession_start();

if ($_POST['submit'] == 'go'){ //check token if ($_POST['token'] == $_SESSION['token']){ //strip_tags $name = strip_tags($_POST['name']); $name = substr($name,0,40); //clean out any potential hexadecimal characters $name = cleanHex($name); //continue processing.... }else{ //stop all processing! remote form posting attempt! }}$token = md5(uniqid(rand(), true));$_SESSION['token']= $token;

function cleanHex($input){ $clean = preg_replace('![][xX]([A-Fa-f0-9]{1,3})!', '',$input); return $clean;}?><form action='<?php echo $_SERVER['PHP_SELF'];?>' method='post'><p><label for='name'>Name</label><input type='text' name='name' size='20' maxlength='40'/></p><input type='hidden' name='token' value='<?php echo $token;?>'/><p><input type='submit' name='submit' value='go'/></p></form>

這種技術是有效的,這是因為在 PHP 中會話數據無法在服務器之間遷移。即使有人獲得了您的 PHP 源代碼,將它轉移到自己的服務器上,并向您的服務器提交信息,您的服務器接收的也只是空的或畸形的會話令牌和原來提供的表單令牌。它們不匹配,遠程表單提交就失敗了。

標簽: PHP
主站蜘蛛池模板: 综合网亚洲 | 在线免费黄色 | 国产成人欧美一区二区三区的 | 成人久久久精品国产乱码一区二区 | 亚洲在线一区二区 | 欧美日产国产成人免费图片 | 成人免费大片黄在线播放 | 国产不卡视频在线观看 | 国产综合精品一区二区三区 | 午夜在线观看视频 | 91麻豆精品国产91久久久久久久久 | 日韩精品一区二区在线观看视频 | 成人一区二区在线 | 色xx综合网| 永久av | 最新国产在线 | 国产精品99久久 | 欧美日韩国产一区二区 | 精品国产乱码久久久久久丨区2区 | 奇米av | 精品中文字幕在线观看 | 在线观看91 | 久久久久国产精品一区二区 | 男女污污网站 | 欧美 亚洲 另类 激情 另类 | 91亚洲国产| 91在线免费观看 | 国产精品成人3p一区二区三区 | 亚洲码欧美码一区二区三区 | 成人在线播放器 | 免费在线成人网 | 一级毛片免费看 | 冷水浴在线观看 | 久久精品国产99国产精品 | 国产精品第一国产精品 | 免费日韩成人 | 欧美一区二区三区在线观看视频 | 国产午夜视频 | 最新中文字幕在线 | 久草在线视频免费播放 | 国产在视频一区二区三区吞精 | 国产成人综合在线 | 天天天天天天天天操 | 九九免费精品视频 | 久久国内| 欧美自拍网| 超碰偷拍 | 日韩欧美在线免费观看 | 日本一级在线观看 | h视频在线观看免费 | 成人福利在线观看 | 伊人狠狠干 | 成人免费视频一区二区 | 欧美一级网 | 国产视频久久久久久 | 国产一区二区成人 | 国产精品99久久久久久动医院 | 性视频一区二区 | 夜夜草av| 欧美一区二区三区黄 | 可以免费看黄的网站 | 精品成人免费视频 | 亚洲免费网站在线观看 | 日韩91| 99精品网 | 日本99精品 | 中文字幕日韩欧美一区二区三区 | 老司机福利在线观看 | 日批免费视频 | 精品国产不卡一区二区三区 | 国产一区二区三区四区五区 | 爱草在线 | 91久久久久久久久久久久久 | 夜夜操天天操 | 91资源在线观看 | 亚洲高清在线观看 | 久久久久久香蕉 | 成人免费一区二区三区视频网站 | 91视频在线免费观看 | 国产精品无码久久久久 | 草久网| 亚洲一区高清 | 久福利 | 久久社区 | 亚洲激情av| 极品久久| 国产精品久久久久久久久久小说 | 四虎影院网站 | 日韩在线成人 | 另类久久 | 亚洲 欧美日韩 国产 中文 | 91高清在线 | 国产一区在线不卡 | 日韩色区 | 伊人夜夜躁av伊人久久 | 一区二区日韩视频 | 一级片在线播放 | 这里只有精品在线视频观看 | 欧美视频一二 | 99re6热在线精品视频播放 | 天堂一区二区三区四区 | 超碰人人射 | 激情欧美一区二区三区中文字幕 | 日韩不卡一区二区三区 | 激情欧美一区 | 91精品久久久久久久久久入口 | 国产在线播放av | 国内av网站 | 91精品欧美久久久久久久 | 国产无套一区二区三区久久 | 91精品久久久久久久久久 | www.夜夜骑 | 欧美性猛交一区二区三区精品 | 精品久久久久久亚洲综合网 | 欧美五月婷婷 | 国产中文字幕在线观看 | 在线视频91 | 日韩中文字幕免费观看 | 精品久久一区 | 日韩在线精品强乱中文字幕 | 精品国产乱码久久久久久久软件 | 欧美日本韩国一区二区 | 麻豆久久久9性大片 | 天天插天天射天天干 | 一区视频在线 | 精品国产一区一区二区三亚瑟 | 亚洲天堂久久 | 日本a v在线播放 | 国产欧美综合一区二区三区 | 亚洲免费观看视频 | 成人不卡 | 成人免费淫片视频观 | 欧美一级淫片免费看 | 另类国产ts人妖高潮系列视频 | 国产精品免费看 | 亚洲国产精品久久久 | 中文字幕精品一区 | 国产美女www爽爽爽免费视频 | 欧美成人精品在线观看 | 午夜影剧院 | 国产一级一级特黄女人精品毛片 | 在线视频一区二区 | 青青草久 | 9久久精品| 婷婷国产成人精品视频 | 色婷综合网 | 成人午夜影院 | 欧美精品成人一区二区三区四区 | 午夜免费电影 | 成人性视频在线播放 | 亚洲欧美在线一区二区 | 久久草在线视频 | 伊人网91| 亚洲女人天堂av | 国产麻豆一区二区三区 | 91视频在线播放视频 | 日韩av福利 | 国产亚洲精品综合一区91555 | 欧美一区 | 日本黄色一级 | 国产精品极品美女在线观看免费 | www.fefe66.com | 在线中文字幕视频 | 成人免费淫片aa视频免费 | 亚欧洲精品视频在线观看 | 成人不卡在线观看 | 7799精品视频天天看 | 日本一区二区三区四区 | 亚洲精品www久久久 www.蜜桃av | 欧美性v| 81精品国产乱码久久久久久 | 久久精品一区二区三区中文字幕 | 国产免费av在线 | 久久不射电影网 | 久久久在线 | 亚洲一区二区av | 国产一区二区三区四区三区 | 三级黄色片在线观看 | 91tv亚洲精品香蕉国产一区 | 欧美日韩精品一区二区在线观看 | 91在线视频播放 | 96久久久久久 | 黑人巨大精品欧美一区二区三区 | 九九国产| 日本黄色大片免费 | 亚洲国产精品成人综合色在线婷婷 | 羞羞视频在线免费 | 亚洲啪啪网站 | 97超碰免费 | 亚洲成av人片在线观看无码 | 国产精品久久久久久久一区探花 | 亚洲国产精品99久久久久久久久 | 精品国精品国产自在久不卡 | 国产成人99久久亚洲综合精品 | 99热这里有精品 | 嫩草精品 | 九九资源站 | 少妇性l交大片免费一 | 亚洲日韩欧美一区二区在线 | 男人久久天堂 | 在线看一区二区 | 国产精品国产成人国产三级 | 免费黄色在线视频 | 成人精品免费视频 | 日韩一区二区在线观看视频 | 成人福利视频 | 欧美午夜一区二区三区免费大片 | 久久草在线视频 | 日韩欧美二区 | 中文字幕第31页 | 亚洲视频免费 | 日韩第一区| 亚洲午夜一区 | 久久久精品欧美一区二区免费 | 国产精品资源在线 | 国产高清在线精品 | 免费成人在线视频网站 | 精品在线免费视频 | 色婷婷亚洲一区二区三区 | 色综合天天 | 国色天香成人网 | 亚洲国产精品99久久久久久久久 | 中文字幕精品一区 | 一区二区三区不卡视频 | 91久久极品 | 在线无码| 国内av网站| 精品久久电影 | 欧美一级淫片免费视频黄 | 久久久久久久一区二区三区 | 日韩精品专区在线影院重磅 | caoporon| 久久精品在线 | 国产精品午夜电影 | 成人亚洲在线观看 | 国产精品亚洲第一 | 国产亚洲精品美女久久久久久久久久 | www.久久久| 欧美自拍视频 | 久久三区 | a中文在线视频 | 蜜桃毛片 | 久久免费国产 | 99久久久免费视频 | 亚洲成人aaa | 天操天天干 | 国产精品一区亚洲二区日本三区 | 伊人逼逼| 日韩三级 | 黄色毛片观看 | 免费观看一级毛片 | 亚洲国产精品18久久 | www.久久99 | 国产情品| 国产一区2区 | 国产噜噜噜噜噜久久久久久久久 | 日韩经典一区 | 亚洲网站免费 | 成人亚洲一区 | a久久 | 久久精品欧美一区二区三区不卡 | 涩涩视频在线免费看 | 国产精品久久久久久久久久久久 | 青青操av| 国产高清久久 | 欧美一级二级视频 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | www312aⅴ欧美在线看 | 九色在线| 在线观看免费视频日韩 | 99久久视频 | 精品成人佐山爱一区二区 | 精品国产乱码一区二区三区 | 国产精品久久一区 | 成人精品久久久 | 精品亚洲一区二区三区 | 黄色大片在线播放 | 草比网站 | 精品视频一区二区三区四区 | 国产一二三区在线播放 | 国产97在线 | 免费 | 国产999精品久久久久久麻豆 | 一区二区精品视频 | 久久久久久成人 | 久久国产精品免费一区二区三区 | 日韩欧美中字 | 国产精品美女视频一区二区三区 | 久久不射电影网 | 亚洲 激情 在线 | 国产三级一区二区 | 久久久婷| 黄色毛片在线看 | 国产精品综合 | 欧美九九九 | theporn国产在线精品 | 欧美精品一区二区三区蜜桃视频 | 久久亚洲91 | 九九热精品免费视频 | 中文字幕乱码亚洲精品一区 | 中文字幕在线一区二区三区 | 亚洲精品在线视频 | 视频一区在线 | 国产精品免费av | 毛片99| 九九热在线视频 | 黄色av网站在线免费观看 | 国产精品大片在线观看 | 日韩在线欧美 | 91麻豆精品国产91久久久更新时间 | 欧美一级黄带 | 天天射影院 | 色成人免费网站 | 亚洲精品乱码久久久久久 | 天天澡天天狠天天天做 | 欧美一级日韩片 | 亚洲精品中文字幕 | 你懂的免费在线观看 | 欧美精品欧美精品系列 | 91麻豆精品一二三区在线 | 九一视频在线免费观看 | a级在线| 国产一级毛片国语一级 | 青青草免费在线视频 | 日韩a级免费视频 | 久久精品国产99国产精品 | 久久久精彩视频 | 91免费在线播放 | 高清av在线 | 蜜桃在线视频 | 国产成人一区二区三区 | 国产亚洲精品精品国产亚洲综合 | caoporn免费在线视频 | a国产精品 | 亚洲一区二区三区在线免费观看 | 极品久久 | 欧美一级全黄 | 精品伊人 | 黑人粗黑大躁护士 | 精品一区二区久久久久久久网站 | aa级毛片毛片免费观看久 | 久久久久久久久一区二区 | а天堂中文最新一区二区三区 | 国产成人精品免高潮在线观看 | 精品一区在线 | 99草视频| 日本 欧美 三级 高清 视频 | 亚洲国产二区 | 91尤物网站网红尤物福利 | 成人av观看| 中文字幕精品三级久久久 | 欧美日韩精品免费观看视频 | 精品无人乱码一区二区三区的优势 | 久久久综合亚洲91久久98 | 国产99久久| 精品午夜久久久 | 视频一区二区三 | 日韩在线一区二区三区 | 国产无套一区二区三区久久 | 刺激网| 在线观看黄免费 | 国产精品久久国产愉拍 | 久久视频在线 | av免费网站| 一区二区三区成人久久爱 | 亚洲卡一 | 国产综合精品视频 | 国内精品一级毛片国产99 | 欧美视频免费看 | 成人影视网址 | 免费看一区二区三区 | 亚洲国产免费 | 亚洲成av人片一区二区梦乃 | 亚洲欧洲久久 | 亚洲综合无码一区二区 | 午夜久久av | 91网在线播放 | 99精品视频在线观看 | 成人高清| 欧美极品一区二区 | 日韩国产一区二区三区 | 国产精品亚洲区 | 欧美午夜一区 | 亚洲欧美在线观看 | a级片在线观看 | 中国特级黄色片 | 亚洲国产成人一区二区精品区 | 美女一级毛片 | 伊人色综合久久久天天蜜桃 | 毛片综合 | 亚洲免费视频在线观看 | 亚洲福利在线观看 | 精品国产乱码久久久久久1区二区 | 男女免费在线观看 | 黄色av观看| 欧美一级淫片免费视频黄 | 亚洲国产高清在线 | 国产精品久久久久久久久久久久久久 | 久久人人爽人人爽人人片av软件 | 91中文字幕在线 | 精品伦理一区二区三区 | 欧美精品免费在线观看 | 日韩精品视频在线观看免费 | 日韩三级电影在线免费观看 | 国产一区2区| 国产精品久久久久久久毛片 | 亚洲三级不卡 | 欧美一级淫片免费视频黄 | 国产精品免费看 | 欧美第一区 | 国产91九色| 毛片黄片视频 | 国产精品久久一区 | 人一级毛片 | 亚洲第一网站 | 特级黄一级播放 | 欧美日韩国产综合在线 | 五月婷婷丁香 | 日韩高清不卡一区二区三区 | 99热精品视| 亚洲一区二区视频在线观看 | 国产欧美日韩综合精品一区二区 | 亚洲黄色一区二区 | 精品国产一区二区三区性色 | 亚洲一区二区免费视频 | 亚洲精品久久久久久一区二区 | 国产aⅴ | 国产精品3区| 影音先锋中文字幕在线 | 一级在线观看 | 韩国精品视频在线观看 | 69黄在线看片免费视频 | 日韩在线中文字幕 | 自拍偷拍视频网 | 欧美a在线| 美日韩精品 | 国产乱码精品一区二区三区中文 | 日韩成人免费中文字幕 | 粉嫩高清一区二区三区 | 成人片网址 | 男女羞羞视频在线免费观看 | 综合五月网 | 精品久久久免费视频 | 不卡一区 | 欧美精品黄 | 久久一区二区三 | 久久精品国产一区 | 日韩中字幕 | 日日干夜夜操 | 国产精品色 | 欧美成人黑人xx视频免费观看 | 色九九 | 欧美日韩精品一区二区在线播放 | 国产一区二区免费 | 狠狠爱www人成狠狠爱综合网 | 天天操天天操 | 免费观看成人毛片 | 国产精品久久精品 | 久久久国产精品视频 | 成人午夜精品一区二区三区 | 国产精品久久久久久av公交车 | 中文字幕亚洲精品 | 国产一级片| 在线一区| 欧美激情综合色综合啪啪五月 | 日韩一区二区三区在线播放 | 日韩欧美不卡 | 国产精品免费观看 | 欧美色性 | 久久99这里只有精品 | 国产乱码精品一区二区三区手机版 | 亚洲在线观看免费视频 | 精品99久久久久久 | 亚洲精品九九 | 亚洲欧美在线观看 | 国产成人av在线 | 欧美精品在线一区二区 | 日韩电影一区二区在线观看 | 日韩欧美一区二区三区 | 免费在线视频精品 | 国产亚洲精品久久久久动 | 午夜精品久久久久久久99黑人 | 中文字幕亚洲第一 | 国产中文字幕在线观看 | 欧美视频中文字幕 | 狠狠操狠狠摸 | 国产精品国产三级国产aⅴ原创 | 欧美黄色网 | 美女黄网站视频免费 | 欧美大片一区二区 | 日韩欧美精品一区二区三区 | 男人天堂视频网 | av影片在线 | 国产久 | 久久久久久91亚洲精品中文字幕 | 中文字幕在线观看视频一区 | 国产精品影院在线观看 | 国产精品久久久久久久久免费高清 | 毛片天堂 | 亚洲欧美日韩精品久久亚洲区 | 日韩在线观看视频一区二区 | 精品一二三区 | 可以免费观看的av | 岛国伊人| 成人久久久精品乱码一区二区三区 | 日韩在线视频一区 | 成人国产| 亚洲区视频在线 | 一区二区三区精品 | 国产精品久久久久久久久免费 | 91成人在线看 | 美女一级a毛片免费观看97 | 四色成人av永久网址 | 视频在线一区 | 天天干女人 | 久久一区二区视频 | 午夜精品久久 | 毛片网站在线观看 | 免费观看国产精品 | 亚洲精品91| 国产91网址 | 91精品久久久久久9s密挑 | 国产精品福利在线观看 | 日本成人片网站 | 国产一区二区三区在线免费观看 | 国产高清视频在线 | 国产成人99久久亚洲综合精品 | 99爱精品在线 | 精品欧美一区二区三区久久久 | 国产精品美女久久久久久免费 | 一二三四区视频在线观看 | 综合网在线 | 久在线视频 | 青青草网 | 免费成人在线网站 | 亚洲高清电影 | 精品久久久久久久久久久久久久久久久久 | 亚洲天堂一区二区 | 视频精品一区二区三区 | 99免费视频 | av网站在线免费观看 | 日本午夜影院 | 亚洲男人天堂2023 | 欧美一级免费在线观看 | 国产在线乱 | 免费一级毛片 | 欧美一级免费高清 | 爱操av| 特级丰满少妇一级aaaa爱毛片 | 成人在线观看免费视频 | 久久三区| 成人欧美一区二区三区在线观看 | 国产精品欧美一区二区三区 | 欧美日韩不卡合集视频 | 国产成人精品电影 | 国产在线高清 | 亚洲精品乱码久久久久久蜜桃91 | 国产精品一区二区视频 | a免费网站 | 精品国产一区二区三区性色 | 在线成人免费视频 | 天堂√在线观看一区二区 | 精品国产欧美 | 一级毛片视频 | 国产一区视频在线 | 欧美日韩一区二区三区四区 | 国产精品美女久久久久久免费 | 夜夜草 | 91亚洲精品久久久 | 日韩成人一区二区 | 久久久久九九九九 | 亚洲视频在线观看免费 | 欧美国产日韩一区 | 久久精品99 | 性色浪潮 | 国产亚洲视频在线观看 | 欧美二区三区 | 久在线 | 性色国产 | 国产不卡精品视频 | av一二三区 | 亚洲国产精品一区二区久久 | 一区二区三区四区日韩 | 免费视频爱爱太爽了 | 国产麻豆乱码精品一区二区三区 | 一色一黄视频 | 久久毛片 | 国产精品久久久久久久久久久久 | 日本在线观看视频一区 | 欧美视频精品在线 | 色综合久久网 | 国产资源在线观看 | 国产日韩精品在线观看 | 日韩精品一区二区在线观看 | 特黄特色大片免费视频观看 | 亚洲在线成人 | av大片在线观看 | 韩国三级中文字幕hd久久精品 | 在线免费观看黄 | 国产成人一级片 | 中文字幕视频一区 | 精品国产乱码久久久久久久软件 | 毛片毛片毛片毛片毛片毛片 | 国产成人精品综合 | 日本不卡视频 | 国产精品视频在线观看 | 国产精品久久久久精 | 成人a在线视频免费观看 | 91免费小视频| 国产高清在线观看 | 国产黄色大片 | 精品久久久久久久久久 | 777777777亚洲妇女 | 亚洲国产成人精品女人久久久 | 久久av网 | 日干夜操 |