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

針對大規模服務日志敏感信息的長效治理實踐

開發 前端
推動相關工作的核心在于有效應對內在和外在的因素。然而,外部因素對推動的阻力常常更大,要成功推動工作,轉變外部阻力為內部動力至關重要。而對于推動者而言,換位思考、勇于挑戰未知、深入追根究底的打磨產品會使產品更容易被接受和推廣。

1 背景

近年來,國家采取了多項重要舉措來加強個人數據保護,包括實施《中華人民共和國網絡安全法》和《個人信息保護法》等法律法規。這些舉措旨在確保用戶隱私的安全,同時確保企業合規運營。在處理敏感數據時,企業有責任采取適當的措施來保護用戶信息。

在數據保護方面,日志記錄成為一個需要特別關注的敏感信息領域。因此,本文將重點介紹轉轉在日志脫敏方面的應用與實踐。

2 目標與措施

目標:對日志內的手機號、身份證號、銀行卡號等敏感信息脫敏,建立一個可持續的日志敏感信息管控機制。

措施:

  1. 檢測和定位存在敏感日志的服務與CASE;
  2. 開發低接入成本的日志脫敏工具;
  3. 推動相關業務進行迭代修改;
  4. 長期監控和持續治理,確保日志安全。

圖片圖片

我們的第一步是利用大數據離線掃描服務日志,并使用正則表達式匹配敏感信息。

然而,第二和第三步是挑戰的關鍵,即如何在不干擾業務正常迭代排期的情況下,推動大量服務的日志做脫敏。我們希望使用技術手段盡量降低業務日志脫敏的人力成本。

3 實施

參考《轉轉日志規范》查看標準日志輸出要求,在此基礎之上,提供一些工具輔助業務對日志脫敏。

【推薦】JavaBean類需實現toString()方法,日志直接打印對象,慎用JSON工具將對象轉換成String。

3.1 脫敏工具類

我們開發了脫敏工具類,期望業務同學在實現JavaBean toString()方法的同時,使用脫敏工具對敏感字段使用脫敏。

圖片圖片

  • desensitize(String input):通用脫敏函數,支持對任意字符脫敏,將提取字符串中4位以上數字(如手機號、銀行卡號、身份證號、數字驗證碼等)做脫敏;
  • desensitizeByInputLength(String input):據字符串長度匹配不同的脫敏規則,如:11位則使用手機號脫敏規則,18位則使用身份證號脫敏規則;
  • desensitizePhoneNumber(String phoneNumber):脫敏手機號,前3位和后4位,中間的數字用*代替;
  • desensitizeIDCard(String idCard):脫敏身份證號, 保留前6位和后4位,脫敏7~15位生日信息, 用*代替;
  • desensitizeBankCardNumber(String bankCardNumber):脫敏銀行卡號, 前6位和后4位,中間的數字用*代替。
public final class DesensitizeUtil {    
    
    /**
     * 根據字符串長度匹配不同的脫敏函數, 強制脫敏
     */
    public static String desensitizeByInputLength(String input) {
        int length = input.length();
        // 手機號
        if (length == 11) {
            return desensitizePhoneNumber(input);
        }
        // ,,,
    }

    /**
     * 脫敏手機號, 前3位和后4位,中間的數字用*代替
     */
    public static String desensitizePhoneNumber(String phoneNumber) {
        // 11位手機號
        if (phoneNumber.length() == 11) {
            return phoneNumber.substring(0, phoneNumber.length() - 8) + "****" + phoneNumber.substring(phoneNumber.length() - 4);
        }
        return phoneNumber;
    }
    
    // 省略其他脫敏函數...

}

3.2 JSON脫敏

在某些日志記錄的場景中,會打印包含敏感字段的JSON格式的數據,需要對其中的敏感信息進行脫敏處理。

在常見的JSON工具中,比如Jackson,可以使用自定義的序列化器/反序列化器來實現脫敏。下面以Jackson為例進行說明:

首先,我們可以定義一個注解來標注哪些字段需要脫敏處理:

/**
 * 脫敏注解
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Desensitize {
 
}

然后,我們可以創建一個自定義的Jackson模塊,通過繼承BeanSerializerModifier類來修改字段的序列化行為。在這個類中,我們可以根據字段上的Desensitize注解來判斷是否需要進行脫敏處理:

/**
 * Jackson脫敏序列化修改器
 */
public class JacksonDesensitizeSerializerModifier extends BeanSerializerModifier {

    @Override
    public List<BeanPropertyWriter> changeProperties(SerializationConfig config, BeanDescription beanDesc,
                                                     List<BeanPropertyWriter> beanProperties) {
        for (BeanPropertyWriter beanProperty : beanProperties) {
            // 只針對使用了@Desensitize的字段做脫敏
            Desensitize desensitize = beanProperty.getAnnotation(Desensitize.class);
            if(desensitize != null) {
                // 指定自定義的序列化器
                beanProperty.assignSerializer(new Desensitization());
            }
        }
        return beanProperties;
    }


    /**
     * Jackson序列化器
     */
    public class Desensitization extends StdSerializer<Object> {

        @Override
        public final void serialize(Object value, JsonGenerator gen, SerializerProvider provider) throws IOException {
            // 根據長度對字段做脫敏
            String desensitize = DesensitizeUtil.desensitizeByInputLength(String.valueOf(value));
            gen.writeString(desensitize);
        }

    }
}

最后,我們需要注冊這個自定義的模塊到Jackson中

/**
 * JSON工具
 */
public class JsonUtil {

    private static final ObjectMapper DESENSITIZE_OBJECT_MAPPER = newObjectMapper();

    private static ObjectMapper newObjectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        //增加脫敏序列化器
        SimpleModule simpleModule = new SimpleModule("SimpleModuleDesensitize");
        simpleModule.setSerializerModifier(new JacksonDesensitizeSerializerModifier());
        mapper.registerModule(simpleModule);
        return mapper;
    }
    
   /**
    * 對象轉JSON的自動脫敏工具
    */
    public static <T> String object2DesensitizeString(T object) throws JsonProcessingException {
        return DESENSITIZE_OBJECT_MAPPER.writeValueAsString(object);
    }
    
    //...
}

對于業務同學而言,只需在需要脫敏的對象上添加脫敏注解,然后使用我們提供的JsonUtil進行脫敏操作,實現簡單高效。

/**
 * 需要脫敏的對象
 */
public class User {
      
    /**
     * 標記此字段需要脫敏
     */
    @Desensitize
    private String mobile;

    private String username;
    
    //getter setter...
}

User user = new User();
user.setAge(18);
user.username = "zhangsan";
user.password = "123456";

JsonUtil.object2DesensitizeString(user);
//輸出結果: {"mobile":"135****5555","username":"張三"}

注意:以上代碼只是一個示例,并不完整。在實際使用中,還需要根據具體的需求來靈活實現脫敏處理。

3.3 APT自動脫敏

在實際實施過程中,以上兩個方案遇到了很多阻礙。主要問題在于業務同學手動維護Bean的toString()方法過于繁瑣、重復工作多、容易遺漏對象并導致增加或刪除字段時需要不斷修改toString()函數。此外,業務服務所依賴的Bean來源復雜,有可能是其他業務提供的第二方Jar包或第三方Jar包。

因此,在實際應用中,業務同學更傾向于將Bean序列化為JSON并輸出到日志中,如下所示:

log.info("data={}", JsonUtil.object2DesensitizeString(bean));

然而,這種方法不符合《轉轉日志規范》要求,而且忽略了JSON序列化性能的問題。此外,這種方案也需要耗費大量的人力資源:需要評估每一行日志,以確定是否需要添加JSON脫敏功能。

因此,業務同學提出了以下需求:是否可以實現類似Lombok一樣的功能,只需在Bean的字段上添加脫敏注解,就能在編譯期自動實現脫敏后的toString()函數?這樣的話,在打印日志時直接打印對象即可自動脫敏。

經過調研發現,Lombok在編譯時利用APT(Annotation Processing Tools)生成代碼,實現了自動化的代碼生成過程,從而簡化了開發工作。

APT(Annotation Processing Tool)是Java的編譯期注解處理器。它允許開發人員在編譯期間處理注解,并根據注解和相關對象的信息生成Java代碼模板或配置文件等。

APT的使用可以提高程序性能,因為它在代碼編譯時完成注解處理,而不是在運行時使用反射方式處理注解。

著名的開源框架,如Lombok、MapStruct和AutoService等,也使用了類似的技術來優化代碼的生成和處理過程。

圖片圖片

我們利用APT技術實現了這樣的功能:如果一個類沒有重寫Object.toString()方法,在編譯時會自動為該類生成一個脫敏后的toString()方法。這個自動生成的toString()方法能夠識別脫敏注解,并在生成的toString()方法內對敏感信息進行脫敏處理。

在Java編譯后的Class文件中,toString()方法可能來自三個來源:源代碼、轉轉APT處理、Lombok等。優先級為:源代碼 > 轉轉APT處理 > Lombok等其他APT。簡言之,我們的APT處理不會覆蓋源代碼中定義的toString()方法,但會覆蓋由Lombok生成的toString()方法。

比如,我們有以下源碼:

class User {

    private String username;
    /**
     * 密碼,增加了脫敏注解
     */
    @Desensitize
    private String password;
}

在接入轉轉APT后,反編譯的Class文件如下:

class User {
    private String username;
    @Desensitize
    private String password;

    public String toString() {
        StringJoiner sj = new StringJoiner(", ", "User[", "]");
        
        if (this.username != null) {
            sj.add("username=" + this.username);
        }
 
        if (this.password != null) {
            sj.add("password=" + DesensitizeUtil.desensitizeByInputLength(value));
        }
 
        return sj.toString();
    }
}

測試如下:

User user = new User();
user.username = "zhangsan";
user.password = "123456";

System.out.println(user);  
//輸出結果: User[username=張三, password=1****6]

這個功能的上線大大降低了業務同學實現日志脫敏的工作量,只需為字段添加脫敏注解即可。同時,也解決了線上對象未重寫Object.toString()時打印日志的尷尬問題。

不過,在落地APT過程中,我們也遇到了一些問題,希望能給讀者提供一些有收益的參考。

3.3.1 本地緩存問題

在某個服務的Spring Bean上,有一個包含大量本地緩存的List字段,這個服務會打印Spring Bean對象到日志中。在引入轉轉APT之前,一切正常;但引入后,出現了頻繁的OOM問題。通過內存分析后發現,問題出在轉轉APT為Spring Bean自動生成的toString()函數內產生了大量的字符串上。

@Service
public class AppService {
    /**
     * 本地緩存
     */
    private List<Object> cache = new ArrayList<>();
    
}

@Autowired
private AppService service;

log.info("service={}", service);

我們觀察到大部分帶有本地緩存(或者高內存占用字段)的對象都是Spring的Bean,因此,我們對轉轉APT進行了修改:即不再為Spring Bean生成toString()函數。

3.3.2 JDK序列化問題

某個服務的JavaBean使用了原生JDK的序列化/反序列化工具,但是這個JavaBean卻沒有添加serialVersionUID。

class Person implements Serializable {

    // 沒有定義serialVersionUID
    // private static final long serialVersionUID = -55721300387280236L;

}

Java序列化機制使用long型的serialVersionUID字段來標志類的版本號;序列化對象時,JVM會將serialVersionUID的值寫入序列化數據中;反序列化時,JVM會將序列化數據中的serialVersionUID與對應類中的serialVersionUID進行比較,若不同,則拋出InvalidCastException;若版本號相同,則能夠進行反序列化。

當一個類沒有顯式定義serialVersionUID時,JVM會自動根據類的信息計算生成一個默認的serialVersionUID。這樣,在類發生變化時,自動生成的serialVersionUID可能會改變,導致無法正確反序列化之前的數據。

引入轉轉APT后,由于自動生成了toString函數,類信息發生變化,導致serialVersionUID也發生了改變,進而導致反序列化失敗。

解決方式是將之前默認生成的serialVersionUID找到,并將其添加到類的源碼中。

3.4 棄用方案

還有一種快速落地的方法是,通過在應用程序內部統一攔截日志輸出,正則匹配敏感信息,并利用脫敏工具進行脫敏處理。

我們沒有使用這種方式的原因是因為:脫敏應盡量避免正則匹配,容易誤傷且性能低下。

4 規劃

上文提過,服務內依賴的Java Bean來源十分復雜,我們目前只解決了對象本身的脫敏問題。而對于服務依賴的Jar包版本控制,仍需要業務團隊梳理依賴關系,并手動修改脫敏后的Jar包版本,這一過程仍需要耗費較多的時間和人力。

考慮到這個問題,是否可以為每個服務提供一個依賴關系管控系統?該系統可以對Jar包的版本實現自動更新、自動化測試、灰度發布、自動發布和回滾等一系列功能。對于轉轉目前的情況來說,我相信這不是一個技術問題,而是一個需要更多時間來完善的TODO List。

圖片圖片

5 總結

一個小小的功能日志脫敏,卻經歷了多個階段與挑戰,從敏感日志的發現到開發脫敏工具類,再到Json脫敏,再到APT脫敏,最終推動業務應用。核心的挑戰在于如何做好推動相關的工作?

我認為,推動相關工作的核心在于有效應對內在和外在的因素。然而,外部因素對推動的阻力常常更大,要成功推動工作,轉變外部阻力為內部動力至關重要。而對于推動者而言,換位思考、勇于挑戰未知、深入追根究底的打磨產品會使產品更容易被接受和推廣。

責任編輯:武曉燕 來源: 轉轉技術
相關推薦

2021-09-06 11:15:05

數據治理字節跳動埋點

2019-05-17 17:17:37

大數據實踐指南

2022-04-26 14:17:37

網絡攻擊黑客網絡安全

2021-04-22 13:38:21

前端開發技術

2025-09-28 07:10:00

GenAI敏感數據安全

2016-04-15 00:43:13

2023-06-27 07:26:36

汽車之家敏感數據治理

2025-10-16 09:14:48

2022-08-04 18:42:21

網絡釣魚攻擊ThreatLabz

2013-03-22 14:44:52

大規模分布式系統飛天開放平臺

2022-09-20 00:20:56

網絡安全微軟游戲

2023-06-28 08:23:41

搜索語義模型

2025-06-10 08:15:00

LLM大語言模測試

2024-09-04 14:18:03

2020-06-10 10:00:53

Serverless數據處理函數

2024-07-19 09:01:07

2013-12-18 09:39:15

JavaScriptMVC框架

2023-05-26 08:39:44

深度學習Alluxio

2021-07-20 09:28:41

信息系統實踐

2021-05-07 06:05:28

Docker信息泄露云安全
點贊
收藏

51CTO技術棧公眾號

国产精品一级无码| 亚洲欧洲精品在线| 天天爽夜夜爽夜夜爽精品| 西野翔中文久久精品国产| 欧美特级www| 免费成人av网站| 国产一区二区三区视频免费观看 | 欧美久久久久久| 91激情在线观看| 精品电影一区| 中文字幕欧美日韩精品| 中文字幕在线国产| 成人精品动漫| 欧美日韩美女在线| www婷婷av久久久影片| 黄色毛片在线看| 国产aⅴ综合色| 国产精品高清在线观看| 国产精品成人久久| 国产精品成人av| 亚洲欧美日韩中文在线制服| 蜜桃色一区二区三区| 成人av集中营| 一本久道久久综合中文字幕 | 国产精品一区二区三区四区五区| 中文字幕一区二区三区四区免费看 | 欧日韩在线观看| 成人免费毛片xxx| 精品国产一区二区三区av片| 精品国产在天天线2019| gogogo高清免费观看在线视频| 亚洲精华液一区二区三区| 亚洲乱码国产乱码精品精98午夜| 日本在线免费观看一区| 神马午夜一区二区| 高清成人在线观看| 亚洲曰本av电影| 一级黄色大片免费观看| 久久电影一区| 国外成人在线直播| 劲爆欧美第一页| 91久久久精品国产| 色多多国产成人永久免费网站 | 亚洲欧美国产高清va在线播放| 精品中文字幕一区二区| 国产日韩欧美在线播放| 中文 欧美 日韩| 免费成人美女在线观看.| 欧洲美女7788成人免费视频| 偷偷操不一样的久久| 亚洲精品美女91| 性色av一区二区三区红粉影视| 久操免费在线视频| 欧美女激情福利| 成人高清视频在线| 久久久久成人精品| 日本少妇在线观看| 国产精品日本| 日本久久亚洲电影| 18国产免费视频| 日韩二区三区四区| 国产视频观看一区| a天堂在线视频| 国产91丝袜在线播放九色| 国产精品久久久久久久免费大片| 人妻丰满熟妇av无码区hd| 不卡的av在线| 日本高清不卡一区二区三| av一本在线| 综合久久国产九一剧情麻豆| 2022中文字幕| 黄色aa久久| 在线看一区二区| 亚洲一区日韩精品| 日本少妇精品亚洲第一区| 精品国产在天天线2019| 91久久免费视频| 欧美r级电影| 欧美极品少妇xxxxⅹ免费视频| 国产无遮挡又黄又爽又色| av不卡在线| 国产精品久久久久久久久免费| 一本久道久久综合无码中文| 国产精品一卡二卡在线观看| 国产综合av一区二区三区| 久久一区二区三区欧美亚洲| 欧美日韩一二三四区| 日本视频在线一区| 99r国产精品视频| 欧美日韩在线中文字幕| 日韩一区在线免费观看| www..com日韩| 欧美成人毛片| 日韩电影中文字幕在线| 日本激情视频一区二区三区| 亚洲国产mv| 成人a视频在线观看| 亚洲欧美日韩成人在线| 成人免费在线视频| 1024精品视频| 日韩成人视屏| 原创国产精品91| 九九热国产视频| 麻豆极品一区二区三区| 精品在线视频一区二区三区| 麻豆网在线观看| 日韩欧美亚洲范冰冰与中字| 免费人成视频在线播放| 国产一区二区三区电影在线观看 | 亚洲天堂男人天堂女人天堂| a级片在线观看免费| 日本va欧美va欧美va精品| 国产 高清 精品 在线 a| 1769视频在线播放免费观看| 精品久久久精品| 人妻精油按摩bd高清中文字幕| 成人情趣视频| 日本精品久久久久久久| 女人18毛片一区二区三区| 自拍偷在线精品自拍偷无码专区| 精品久久久久av| 国产欧美啪啪| 九九精品视频在线观看| 97caocao| 国产精品三级电影| 国产成人无码av在线播放dvd| 成人影院中文字幕| 欧美成人免费网| 一区二区美女视频| 国产视频一区在线观看| 啊啊啊一区二区| 精品三级av| 97视频在线观看免费| 国产91免费看| 亚洲宅男天堂在线观看无病毒| 在线观看av免费观看| 欧美韩日一区| 国产综合久久久久| aⅴ在线视频男人的天堂| 色婷婷精品久久二区二区蜜臀av| 国模无码视频一区| 亚洲小说欧美另类社区| y111111国产精品久久婷婷| 超碰在线caoporn| 91精品欧美久久久久久动漫| 九九精品视频免费| 韩国一区二区视频| 亚洲永久激情精品| 91国产精品| 久久999免费视频| www.久久成人| 亚洲午夜精品网| 国产黑丝在线观看| 99在线精品视频在线观看| 国产综合18久久久久久| 在线观看涩涩| 亚洲欧美精品suv| 免费的毛片视频| 中文字幕的久久| 国产在线观看中文字幕| 欧美日韩影院| 久久国产精品一区二区三区| 欧美黑人疯狂性受xxxxx野外| 国产午夜精品全部视频播放| 亚洲网站在线免费观看| 亚洲三级小视频| 国产免费一区二区三区最新6| 夜夜嗨网站十八久久 | 能在线看的av| 欧美日本一道本在线视频| 外国一级黄色片| 99久久伊人久久99| 人人爽人人av| 一区二区三区午夜探花| 国产一区二区精品在线| 电影久久久久久| 久热国产精品视频| 天堂av在线免费观看| 欧美日韩一区 二区 三区 久久精品| 免费在线观看a级片| 成人av片在线观看| 天天操天天爽天天射| 欧美精品日本| 欧洲精品码一区二区三区免费看| 91精品一久久香蕉国产线看观看| 欧美激情aaaa| 国产免费av在线| 日韩精品在线网站| 国产成人av免费| 亚洲综合在线第一页| 巨胸大乳www视频免费观看| 久久国产麻豆精品| 国产www免费| 精品视频网站| 国产呦系列欧美呦日韩呦| 成人午夜在线| 69影院欧美专区视频| 麻豆视频在线观看免费网站| 日韩精品在线观看一区二区| 一级特黄aa大片| 精品福利在线观看| 欧洲第一无人区观看| 久久久久久久久免费| 性生活在线视频| 天堂精品中文字幕在线| 日本中文字幕在线视频观看| 久久在线播放| 一区二区三区在线观看欧美| 国产乱子伦精品视频| 国产a久久精品一区二区三区| 99国产视频在线| 国产第一亚洲| 日本一区二区在线播放| 激情影院在线| 久久视频在线直播| 国产视频福利在线| 亚洲精品视频网上网址在线观看| 国产av一区二区三区精品| 欧美网站一区二区| 日韩电影在线观看一区二区| 亚洲电影一级黄| 九九免费精品视频| 成人免费一区二区三区在线观看| 永久免费av无码网站性色av| 久久午夜色播影院免费高清| 国产真实乱人偷精品| 国产不卡视频在线播放| 91aaa精品| 另类调教123区| 成人免费在线观看视频网站| 久久久久看片| 亚洲精品中文字幕无码蜜桃| 国产日韩一区二区三区在线| 加勒比成人在线| 亚洲国产国产亚洲一二三| 久久亚洲国产成人精品无码区| 91精品婷婷色在线观看| 中国人体摄影一区二区三区| japanese国产精品| 神马影院午夜我不卡| 国产一区二区三区不卡视频网站| 欧美xxxx黑人又粗又长密月| 免费一区二区三区视频导航| 欧美一级日本a级v片| 综合综合综合综合综合网| 欧美人xxxxx| 精品大片一区二区| 丝袜美腿玉足3d专区一区| 精品视频国产| 在线看视频不卡| 亚洲理论电影网| 欧美日韩激情四射| 亚洲国产专区校园欧美| 免费看又黄又无码的网站| 国产精品久久久久毛片大屁完整版 | 日韩午夜激情| 久久精品99国产| 日韩国产成人精品| 国内免费久久久久久久久久久 | 国产免费av高清在线| 国产亚洲欧美日韩精品| 成年人免费在线视频| 日韩在线观看免费全| 50度灰在线| 91精品国产91久久久久| 在线观看精品| 成人在线激情视频| 凹凸av导航大全精品| 免费观看成人高| 久久在线电影| 69sex久久精品国产麻豆| 久久亚洲欧洲| 精品综合久久久久| 成人精品免费视频| 免费观看av网站| 亚洲欧洲韩国日本视频| 免费在线观看av网址| 欧美午夜精品久久久久久浪潮| 中文字幕 日韩有码| 日韩一区二区三区视频在线观看| 天堂网在线播放| 中文字幕欧美国内| 久草在线资源站资源站| 国产成人精品免高潮费视频| 91精品国产一区二区在线观看| 国产精品免费在线播放| 狠狠综合久久av一区二区蜜桃| 天天爱天天做天天操| 99国产精品视频免费观看一公开 | 国产资源在线视频| 美女mm1313爽爽久久久蜜臀| 自拍视频第一页| 国产无人区一区二区三区| 欧美三级 欧美一级| 色婷婷亚洲一区二区三区| h狠狠躁死你h高h| 亚洲女人被黑人巨大进入al| 成年人黄视频在线观看| 国产va免费精品高清在线| 亚洲精品观看| 亚洲国产日韩综合一区| 一区二区三区四区五区在线| 五月天丁香花婷婷| 久久久国产精品不卡| 欧美精品99久久久| 欧美日韩视频在线第一区| 婷婷av一区二区三区| 欧美成人精品在线视频| 欧美xxxx网站| 欧美精品亚洲精品| 尹人成人综合网| 在线成人免费av| 国产精品美女久久久久aⅴ | 77thz桃花论族在线观看| 成人福利网站在线观看| 欧美一区二区三区激情视频| 97国产精东麻豆人妻电影| 丁香亚洲综合激情啪啪综合| 天海翼在线视频| 欧美亚洲国产一区二区三区 | 蜜臀视频一区二区三区| 99精品视频在线免费观看| 欧美成人精品欧美一级私黄| 欧美福利电影网| av国产在线观看| 国产精品99一区| 亚洲人成精品久久久| 国产午夜大地久久| 成人小视频在线| 久久精品www| 日韩一本二本av| av在线看片| 亚洲一区二区三区视频| 91精品国产91久久综合| 午夜剧场在线免费观看| 国产精品麻豆99久久久久久| 日韩乱码一区二区三区| 亚洲一区二区久久| 中文字幕系列一区| 亚洲bbw性色大片| 亚洲电影有码| 欧美大片一区二区三区| 久久精品视频观看| 成人国产精品日本在线| 亚洲无中文字幕| 亚洲国产综合av| 亚洲精品菠萝久久久久久久| 国产黄a三级三级看三级| 欧美二区在线播放| jazzjazz国产精品久久| 欧美综合在线播放| av爱爱亚洲一区| 精品国产一区二区三区四| 亚洲人a成www在线影院| 日韩不卡视频在线观看| 亚洲伊人婷婷| 国产v综合v亚洲欧| 91久久国产视频| 亚洲欧美综合另类中字| 欧美成人高清视频在线观看| 看一级黄色录像| 不卡视频免费播放| 久久久国产精品成人免费| 亚洲欧洲日产国码av系列天堂| 成人免费福利| 亚洲国产精品女人| 成人久久视频在线观看| 亚洲影院在线播放| 一本色道久久综合狠狠躁篇怎么玩 | 日本天堂在线| 国产美女主播一区| 欧美亚洲不卡| 国产成人无码精品久久二区三| 欧美性猛交xxxx乱大交退制版| 黄色av电影在线播放| 国产精品一区二区欧美| 日本vs亚洲vs韩国一区三区二区| 国产一区二区三区在线视频观看| 精品福利在线导航| 韩国三级一区| 免费成人深夜夜行网站视频| 99久久国产综合精品麻豆| 国产精品久久久久久久久夜色| 久久精品视频导航| 亚洲第一论坛sis| 中文字幕12页| 欧美日韩国产一区中文午夜| 欧洲不卡av| 久久一区二区精品| 韩国一区二区视频| 欧美黄色一级大片| 欧美日本中文字幕| 清纯唯美综合亚洲| 亚洲成av人片在线观看无| 欧美亚日韩国产aⅴ精品中极品| 欧美v亚洲v| 永久久久久久| 久久亚洲影视婷婷| 亚洲精品一区二区三区蜜桃| 国产精品视频在线观看|