甘蔗男是什么意思| 台风什么时候登陆| 梦见自己找工作是什么意思| 包皮过长有什么影响| 胎位头位是什么意思| 风湿病挂什么科| 小猫打什么疫苗| 周公吐哺天下归心是什么意思| 蛞蝓是什么意思| tfboys是什么意思| 驾驶证扣6分有什么影响| 小孩手指脱皮是什么原因| 为什么泡完脚后非常痒| 哆啦a梦的寓意是什么| 范字五行属什么| 喉咙痛有黄痰吃什么药| 阴囊潮湿吃什么| afi是胎儿的什么意思| 为什么身上会出现淤青| 鱼油有什么功效和作用| 鳀鱼是什么鱼| 心肾不交失眠吃什么中成药| 甲钴胺不能和什么药一起服用| 硬盘是什么| 中堂相当于现在什么官| trance什么意思| 手抖是什么病的症状| 血常规检查什么项目| 可转债是什么| cv是什么| 室上性心动过速是什么原因引起的| 吃什么东西可以补血| 今年是什么命| 易主是什么意思| 恩施有什么好玩的| 外痔疼痛用什么药最好| 指甲上的白色月牙代表什么| 肾不好是什么原因引起的| 自言自语什么意思| 大便干燥吃什么| 什么是偏光眼镜| 普惠幼儿园是什么意思| mds是什么| 双龙是什么意思| 检查腰部挂什么科| 兔死狐悲是什么生肖| 吃什么通便效果最好最快| 不能人道什么意思| 手足口用什么药| 宝宝蛋白质过敏喝什么奶粉| 南下是什么意思| 双子座是什么性格| 红粉是什么意思| 榴莲吃多了有什么坏处| 元素是什么| 棕色皮鞋配什么颜色裤子| 张国荣属什么生肖| 维生素b族适合什么人吃| 嘈杂纳减是什么意思| 红斑狼疮是什么病| 收放自如是什么意思| 拉黄水是什么原因| 冒昧打扰是什么意思| 天然气主要成分是什么| 什么牌子洗面奶好用| 复光是什么意思| ns是什么| 血糖低怎么办吃什么补| mico是什么意思| 朱砂痣是什么意思| 花枝招展什么意思| 舌头有问题应该挂什么科| 梦到蛇是什么意思周公解梦| 滑精是什么症状| 小腿发痒是什么原因| 腊月初七是什么星座| 肾阳虚和肾阴虚有什么区别症状| 见利忘义是什么意思| 胎盘厚有什么影响| 头发偏黄是什么原因| 什么时候吃苹果最好| 贾宝玉大名叫什么| 产厄是什么意思| 什么是跑马| 钦此是什么意思| 牛的五行属什么| 蝎子泡酒有什么功效| 历久弥新什么意思| 肌酐指标高说明什么| 最短的季节是什么| 透析什么意思| 排长是什么军衔| 多动症吃什么药| 口腔溃疡吃什么中成药| 大脑缺氧有什么症状| 吕洞宾是什么生肖| 尾椎骨痛挂什么科| cto是什么职位| 梦见动物是什么意思| 月球表面的坑叫什么| 头孢是治疗什么病的| 易烊千玺原名叫什么| 妥了是什么意思| 石榴是什么生肖| 甘油三酯高不能吃什么| 肝病初期有什么症状| 鱼精是什么| 喇蛄和小龙虾什么区别| ferragamo是什么牌子| 甲状腺做什么检查| spv是什么| 福生无量天尊什么意思| 头疼是什么病的前兆| 安徽有什么特色美食| 梦见自己生二胎是什么意思| 双侧胸膜增厚是什么病| 海带是什么植物| 什么可以代替润滑油| dumpling是什么意思| 低血糖吃什么好的快| 焱加木念什么| 碳十四检测是查什么的| 验孕棒什么时候测比较准| 为什么会得脂溢性皮炎| 咳嗽可以喝什么| 抗氧化是什么意思| 灵芝搭配什么煲汤最好| 属虎适合佩戴什么饰品| 请人原谅说什么| 多愁善感是什么意思| 人体含量最多的元素是什么| 肾阴虚火旺有什么症状| 吃猪腰子有什么好处和坏处| cpv是什么病毒| 小腿酸软无力是什么原因| 脚突然抽筋是什么原因| 甲状腺是什么病| 男生进入是什么感觉| 处子之身是什么意思| 脖子淋巴结挂什么科| 副鼻窦炎是什么意思| 桃花什么季节开| 染色体由什么和什么组成| 气血不足吃什么食物最好| 什么动物最安静| 陶渊明是什么朝代的| 招财进宝是什么生肖| 乡愁是什么| 头一直疼是什么原因| 尿路感染看什么科| 谷读什么| 杨枝甘露是什么| 尿液黄是什么原因| 三尖瓣轻度反流是什么意思| 吃榴莲补什么| 规培生是什么意思| 1800年是什么朝代| 为什么白头发越来越多| 重庆房价为什么这么低| 这个季节适合种什么菜| 能级是什么意思| 右附件区囊肿是什么意思| 肩袖损伤用什么药| 211大学什么意思| 结局be是什么意思| bl是什么单位| 什么的朋友| 香草是什么植物| 心什么诚服| 菩提萨婆诃是什么意思| 补牙是什么意思| 冰激凌和冰淇淋有什么区别| 乙肝吃什么药| 梦见怀孕是什么征兆| 检察院是干什么的| 什么时候闰正月| 芸豆长什么样子| 尿潴留吃什么药| 双氧水是什么| 老年人腿肿是什么原因引起的| 肤色暗黄适合穿什么颜色的衣服| 孕妇为什么会便秘| 三个水念什么| 蛋白粉适合什么人吃| 宫腔线不清晰什么意思| 凤凰代表什么生肖| 激素六项都是查什么| 梦见上班迟到什么意思| 熟地是什么| 丙申五行属什么| 阴茎不硬吃什么| abo是什么| 蝙蝠为什么倒挂着睡觉| 妤读什么| 舌苔发白是什么原因呢| 男人吃什么补肾壮阳效果最好| 做梦梦见剪头发是什么意思| 来事吃什么水果好| 桦树茸泡水喝有什么功效| 梦见自己穿新衣服是什么意思| 犹太人为什么叫犹太人| 五台山在什么地方| media是什么意思| 公斤和斤有什么区别| 尊敬是什么意思| 脊背疼是什么原因| 为什么晚上睡不着觉| 经常腿抽筋是什么原因| 什么生肖没有牙齿| 脚板痛是什么原因| 86年属什么的生肖| 朝鲜战争的起因是什么| 什么前什么后| 过期蜂蜜还有什么用途| 怀孕有什么感觉| 夺魁是什么意思| 紫苏长什么样子图片| 为什么会得肩周炎| 天干是什么| 吃完饭打嗝是什么原因| 峦读什么| 上海有什么烟| 茶壶嘴为什么不能对着人| 公安和警察有什么区别| 正常舌头是什么颜色| 胃疼能吃什么| 什么是特异性皮炎| 1978年出生是什么命| 可孚属于什么档次| 团是什么结构| 血细胞分析是查什么的| 耐人寻味是什么意思| 贵子是什么意思| 白衣天使是什么意思| 查胆固醇挂什么科| 胆结石吃什么排石最快| 咕咕咕咕叫是什么鸟| 什么是预防医学| 梦到地震是什么意思| 什么人容易得淋巴癌| 靶向是什么意思| 抗性糊精是什么| 什么叫桑拿| 9月19日是什么星座| 急性盆腔炎有什么症状表现呢| 早期唐筛是检查什么| 经常泡脚有什么好处| 澳门什么时候回归的| 远视储备是什么意思| 母后是什么意思| 感冒冒虚汗是什么原因| 煲排骨汤放什么材料好| 天丝是什么材质| 什么什么桑田| 眼视光医学是干什么的| 西凤酒属于什么香型| 血糖在化验单上叫什么| 一月六号是什么星座| 精心的什么| 肚脐周围痛是什么原因| 子宫肌瘤是什么| 女性尿检能查出什么病| 右肺疼是什么原因| 固执己见是什么意思| 百度Jump to content

周鸿祎:创业者最应找具备这4个特质的合伙人

From Wikipedia, the free encyclopedia
百度 至于这次贸易危机是否能够顺利度过,需要全球的共同努力,中国将尽己所能,最大限度地减少贸易危机产生的损失。

Digest access authentication is one of the agreed-upon methods a web server can use to negotiate credentials, such as username or password, with a user's web browser. This can be used to confirm the identity of a user before sending sensitive information, such as online banking transaction history. It applies a hash function to the username and password before sending them over the network. In contrast, basic access authentication uses the easily reversible Base64 encoding instead of hashing, making it non-secure unless used in conjunction with TLS.

Technically, digest authentication is an application of cryptographic hashing with usage of nonce values to prevent replay attacks. It uses the HTTP protocol.

DIGEST-MD5 as a SASL mechanism specified by RFC 2831 is obsolete since July 2011.[1]

Overview

[edit]

Digest access authentication was originally specified by RFC 2069 (An Extension to HTTP: Digest Access Authentication). RFC 2069 specifies roughly a traditional digest authentication scheme with security maintained by a server-generated nonce value. The authentication response is formed as follows (where HA1 and HA2 are names of string variables):

HA1 = MD5(username:realm:password)
HA2 = MD5(method:digestURI)
response = MD5(HA1:nonce:HA2)

An MD5 hash is a 16-byte value. The HA1 and HA2 values used in the computation of the response are the hexadecimal representation (in lowercase) of the MD5 hashes respectively.

RFC 2069 was later replaced by RFC 2617 (HTTP Authentication: Basic and Digest Access Authentication). RFC 2617 introduced a number of optional security enhancements to digest authentication; "quality of protection" (qop), nonce counter incremented by client, and a client-generated random nonce. These enhancements are designed to protect against, for example, chosen-plaintext attack cryptanalysis.

If the algorithm directive's value is "MD5" or unspecified, then HA1 is

HA1 = MD5(username:realm:password)

If the algorithm directive's value is "MD5-sess", then HA1 is

HA1 = MD5(MD5(username:realm:password):nonce:cnonce)

If the qop directive's value is "auth" or is unspecified, then HA2 is

HA2 = MD5(method:digestURI)

If the qop directive's value is "auth-int", then HA2 is

HA2 = MD5(method:digestURI:MD5(entityBody))

If the qop directive's value is "auth" or "auth-int", then compute the response as follows:

response = MD5(HA1:nonce:nonceCount:cnonce:qop:HA2)

If the qop directive is unspecified, then compute the response as follows:

response = MD5(HA1:nonce:HA2)

The above shows that when qop is not specified, the simpler RFC 2069 standard is followed.

In September 2015, RFC 7616 replaced RFC 2617 by adding 4 new algorithms: "SHA-256", "SHA-256-sess", "SHA-512-256" and "SHA-512-256-sess". The encoding is equivalent to "MD5" and "MD5-sess" algorithms, with MD5 hashing function replaced with SHA-256 and SHA-512-256. However, as of July 2021, none of popular browsers, including Firefox[2] and Chrome,[3] support SHA-256 as the hash function. As of October 2021, Firefox 93[4] officially supports "SHA-256" and "SHA-256-sess" algorithms for digest authentication. However, support for "SHA-512-256", "SHA-512-256-sess" algorithms and username hashing[5] is still lacking.[6] As of August 2023, Chromium 117 (then Chrome and Edge) supports "SHA-256".[7]

Impact of MD5 security on digest authentication

[edit]

The MD5 calculations used in HTTP digest authentication is intended to be "one way", meaning that it should be difficult to determine the original input when only the output is known. If the password itself is too simple, however, then it may be possible to test all possible inputs and find a matching output (a brute-force attack) – perhaps aided by a dictionary or suitable look-up list, which for MD5 is readily available.[8]

The HTTP scheme was designed by Phillip Hallam-Baker at CERN in 1993 and does not incorporate subsequent improvements in authentication systems, such as the development of keyed-hash message authentication code (HMAC). Although the cryptographic construction that is used is based on the MD5 hash function, collision attacks were in 2004 generally believed to not affect applications where the plaintext (i.e. password) is not known.[9] However, claims in 2006[10] cause some doubt over other MD5 applications as well.

HTTP digest authentication considerations

[edit]

Advantages

[edit]

HTTP digest authentication is designed to be more secure than traditional digest authentication schemes, for example "significantly stronger than (e.g.) CRAM-MD5 ..." (RFC 2617).

Some of the security strengths of HTTP digest authentication are:

  • The password is not sent clear to the server.
  • The password is not used directly in the digest, but rather HA1 = MD5(username:realm:password). This allows some implementations (e.g. JBoss[11]) to store HA1 rather than the cleartext password (however, see disadvantages of this approach)
  • Client nonce was introduced in RFC 2617, which allows the client to prevent chosen-plaintext attacks, such as rainbow tables that could otherwise threaten digest authentication schemes
  • Server nonce is allowed to contain timestamps. Therefore, the server may inspect nonce attributes submitted by clients, to prevent replay attacks
  • Server is also allowed to maintain a list of recently issued or used server nonce values to prevent reuse
  • It prevents Phishing because the plain password is never sent to any server, be it the correct server or not. (Public key systems rely on the user being able to verify that the URL is correct.)

Disadvantages

[edit]

There are several drawbacks with digest access authentication:

  • The website has no control over the user interface presented to the end user.
  • Many of the security options in RFC 2617 are optional. If quality-of-protection (qop) is not specified by the server, the client will operate in a security-reduced legacy RFC 2069 mode
  • Digest access authentication is vulnerable to a man-in-the-middle (MITM) attack. For example, a MITM attacker could tell clients to use basic access authentication or legacy RFC2069 digest access authentication mode. To extend this further, digest access authentication provides no mechanism for clients to verify the server's identity
  • A server can store HA1 = MD5(username:realm:password) instead of the password itself. However, if the stored HA1 is leaked, an attacker can generate valid responses and access documents in the realm just as easily as if they had access to the password itself. The table of HA1 values must therefore be protected as securely as a file containing plaintext passwords.[12]
  • Digest access authentication prevents the use of a strong password hash (such as bcrypt) when storing passwords (since either the password, or the digested username, realm and password must be recoverable)

Also, since the MD5 algorithm is not allowed in FIPS, HTTP Digest authentication will not work with FIPS-certified[note 1] crypto modules.

Alternative authentication protocols

[edit]

By far the most common approach is to use a HTTP+HTML form-based authentication cleartext protocol, or more rarely Basic access authentication. These weak cleartext protocols used together with HTTPS network encryption resolve many of the threats that digest access authentication is designed to prevent. However, this use of HTTPS relies upon the end user to accurately validate that they are accessing the correct URL each time to prevent sending their password to an untrusted server, which results in phishing attacks. Users often fail to do this, which is why phishing has become the most common form of security breach.

Some strong authentication protocols for web-based applications that are occasionally used include:

Example with explanation

[edit]

The following example was originally given in RFC 2617 and is expanded here to show the full text expected for each request and response. Note that only the "auth" (authentication) quality of protection code is covered – as of April 2005, only the Opera and Konqueror web browsers are known to support "auth-int" (authentication with integrity protection).[citation needed] Although the specification mentions HTTP version 1.1, the scheme can be successfully added to a version 1.0 server, as shown here.

This typical transaction consists of the following steps:

  1. The client asks for a page that requires authentication but does not provide a username and password.[note 2] Typically this is because the user simply entered the address or followed a link to the page.
  2. The server responds with the 401 "Unauthorized" response code, providing the authentication realm and a randomly generated, single-use value called a nonce.
  3. At this point, the browser will present the authentication realm (typically a description of the computer or system being accessed) to the user and prompt for a username and password. The user may decide to cancel at this point.
  4. Once a username and password have been supplied, the client re-sends the same request but adds an authentication header that includes the response code.
  5. In this example, the server accepts the authentication and the page is returned. If the username is invalid and/or the password is incorrect, the server might return the "401" response code and the client would prompt the user again.

Client request (no authentication)
GET /dir/index.html HTTP/1.0
Host: localhost

(followed by a new line, in the form of a carriage return followed by a line feed).[13]

Server response
HTTP/1.0 401 Unauthorized
Server: HTTPd/0.9
Date: Sun, 10 Apr 2014 20:26:47 GMT
WWW-Authenticate: Digest realm="testrealm@host.com",
                        qop="auth,auth-int",
                        nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
                        opaque="5ccc069c403ebaf9f0171e9517f40e41"
Content-Type: text/html
Content-Length: 153

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Error</title>
  </head>
  <body>
    <h1>401 Unauthorized.</h1>
  </body>
</html>
Client request (username "Mufasa", password "Circle Of Life")
GET /dir/index.html HTTP/1.0
Host: localhost
Authorization: Digest username="Mufasa",
                     realm="testrealm@host.com",
                     nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
                     uri="/dir/index.html",
                     qop=auth,
                     nc=00000001,
                     cnonce="0a4f113b",
                     response="6629fae49393a05397450978507c4ef1",
                     opaque="5ccc069c403ebaf9f0171e9517f40e41"

(followed by a blank line, as before).

Server response
HTTP/1.0 200 OK
Server: HTTPd/0.9
Date: Sun, 10 Apr 2005 20:27:03 GMT
Content-Type: text/html
Content-Length: 7984

(followed by a blank line and HTML text of the restricted page).


The "response" value is calculated in three steps, as follows. Where values are combined, they are delimited by colons.

  1. The MD5 hash of the combined username, authentication realm and password is calculated. The result is referred to as HA1.
  2. The MD5 hash of the combined method and digest URI is calculated, e.g. of "GET" and "/dir/index.html". The result is referred to as HA2.
  3. The MD5 hash of the combined HA1 result, server nonce (nonce), request counter (nc), client nonce (cnonce), quality of protection code (qop) and HA2 result is calculated. The result is the "response" value provided by the client.

Since the server has the same information as the client, the response can be checked by performing the same calculation. In the example given above the result is formed as follows, where MD5() represents a function used to calculate an MD5 hash, backslashes represent a continuation and the quotes shown are not used in the calculation.

Completing the example given in RFC 2617 gives the following results for each step.

   HA1 = MD5( "Mufasa:testrealm@host.com:Circle Of Life" )
       = 939e7578ed9e3c518a452acee763bce9

   HA2 = MD5( "GET:/dir/index.html" )
       = 39aff3a2bab6126f332b942af96d3366

   Response = MD5( "939e7578ed9e3c518a452acee763bce9:\
                    dcd98b7102dd2f0e8b11d0f600bfb0c093:\
                    00000001:0a4f113b:auth:\
                    39aff3a2bab6126f332b942af96d3366" )
            = 6629fae49393a05397450978507c4ef1

At this point the client may make another request, reusing the server nonce value (the server only issues a new nonce for each "401" response) but providing a new client nonce (cnonce). For subsequent requests, the hexadecimal request counter (nc) must be greater than the last value it used – otherwise an attacker could simply "replay" an old request with the same credentials. It is up to the server to ensure that the counter increases for each of the nonce values that it has issued, rejecting any bad requests appropriately. Obviously changing the method, URI and/or counter value will result in a different response value.

The server should remember nonce values that it has recently generated. It may also remember when each nonce value was issued, expiring them after a certain amount of time. If an expired value is used, the server should respond with the "401" status code and add stale=TRUE to the authentication header, indicating that the client should re-send with the new nonce provided, without prompting the user for another username and password.

The server does not need to keep any expired nonce values – it can simply assume that any unrecognised values have expired. It is also possible for the server to only allow each nonce value to be returned once, although this forces the client to repeat every request. Note that expiring a server nonce immediately will not work, as the client would never get a chance to use it.

The .htdigest file

[edit]

.htdigest is a flat-file used to store usernames, realm and passwords for digest authentication of Apache HTTP Server. The name of the file is given in the .htaccess configuration, and can be anything, but ".htdigest" is the canonical name. The file name starts with a dot, because most Unix-like operating systems consider any file that begins with dot to be hidden. This file is often maintained with the shell command "htdigest" which can add, and update users, and will properly encode the password for use.

The "htdigest" command is found in the apache2-utils package on dpkg package management systems and the httpd-tools package on RPM package management systems.

The syntax of the htdigest command:[14]

htdigest [ -c ] passwdfile realm username

The format of the .htdigest file:[14]

user1:Realm:5ea41921c65387d904834f8403185412
user2:Realm:734418f1e487083dc153890208b79379

SIP digest authentication

[edit]

Session Initiation Protocol (SIP) uses basically the same digest authentication algorithm. It is specified by RFC 3261.

Browser implementation

[edit]

Most browsers have substantially implemented the spec, some barring certain features such as auth-int checking or the MD5-sess algorithm. If the server requires that these optional features be handled, clients may not be able to authenticate (though note mod_auth_digest for Apache does not fully implement RFC 2617 either).

Deprecations

[edit]

Because of the disadvantages of Digest authentication compared to Basic authentication over HTTPS it has been deprecated by a lot of software e.g.:

See also

[edit]

Notes

[edit]
  1. ^ The following is a list of FIPS approved algorithms: "Annex A: Approved Security Functions for FIPS PUB 140-2, Security Requirements for Cryptographic Modules" (PDF). National Institute of Standards and Technology. January 31, 2014.
  2. ^ A client may already have the required username and password without needing to prompt the user, e.g. if they have previously been stored by a web browser.

References

[edit]
  1. ^ Moving DIGEST-MD5 to Historic, July 2011.
  2. ^ "Bug 472823: SHA 256 Digest Authentication". Mozilla Bugzilla.
  3. ^ "Issue 1160478: SHA-256 for HTTP Digest Access Authentication in accordance with rfc7616". Chromium bugs.
  4. ^ "Bug 472823: SHA 256 Digest Authentication". Mozilla Bugzilla.
  5. ^ "IETF.org: RFC 7616 Username Hashing". Ietf Datatracker. 30 September 2015.
  6. ^ "Mozilla-central: support SHA-256 HTTP Digest auth". Mozilla-central.
  7. ^ "Chrome Feature: RFC 7616 Digest auth: Support SHA-256 and username hashing".
  8. ^ List of rainbow tables, Project Rainbowcrack. Includes multiple MD5 rainbow tables.
  9. ^ "Hash Collision Q&A". Cryptography Research. 2025-08-06. Archived from the original on 2025-08-06.[better source needed]
  10. ^ Jongsung Kim; Alex Biryukov; Bart Preneel; Seokhie Hong. "On the Security of HMAC and NMAC Based on HAVAL, MD4, MD5, SHA-0 and SHA-1" (PDF). IACR.
  11. ^ Scott Stark (2025-08-06). "DIGEST Authentication (4.0.4+)". JBoss. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  12. ^ Franks, J.; Hallam-Baker, P.; Hostetler, J.; Lawrence, S.; Leach, P.; Luotonen, A.; Stewart, L. (June 1999). "HTTP Authentication: Basic and Digest Access Authentication: Storing passwords". IETF. doi:10.17487/RFC2617. S2CID 27137261. {{cite journal}}: Cite journal requires |journal= (help)
  13. ^ Tim Berners-Lee, Roy Fielding, Henrik Frystyk Nielsen (2025-08-06). "Hypertext Transfer Protocol -- HTTP/1.0: Request". W3C.{{cite web}}: CS1 maint: multiple names: authors list (link)
  14. ^ a b "htdigest - manage user files for digest authentication". apache.org.
  15. ^ Emanuel Corthay (2025-08-06). "Bug 168942 - Digest authentication with integrity protection". Mozilla.
  16. ^ Timothy D. Morgan (2025-08-06). "HTTP Digest Integrity: Another look, in light of recent attacks" (PDF). vsecurity.com. Archived from the original (PDF) on 2025-08-06.
  17. ^ "TechNet Digest Authentication". August 2013.
  18. ^ Anthony, Sebastian (February 13, 2013). "Opera admits defeat, switches to Google's Chromium". Extreme Tech. Ziff Davis. Retrieved 19 January 2024.
  19. ^ DeLorenzo, Ike (2025-08-06). "Fare-thee-well, Digest access authentication". Bitbucet. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
  20. ^ "[RFC] Deprecate HTTP Digest authentication · Issue #24325 · symfony/symfony". GitHub. Archived from the original on 2025-08-06. Retrieved 2025-08-06.
[edit]
便秘吃什么水果 xl代表什么尺码 应无所住什么意思 什么季节减肥效果最快最好 kj是什么单位
激素药是什么意思 繁衍的衍是什么意思 一直打嗝吃什么药 大姑姐最怕弟媳什么 胃溃疡十二指肠溃疡吃什么药
6月出生是什么星座 血管痉挛是什么原因引起的 什么叫阴吹 虱子长什么样 智力是什么意思
洛神是什么意思 对冲是什么意思 区委常委是什么级别 吃什么对血管好 钢笔刻字刻什么好
冬是什么结构dayuxmw.com 胃炎伴糜烂是什么意思hcv9jop7ns9r.cn 做病理意味着什么hcv7jop5ns6r.cn 气短是什么原因96micro.com 舅父是什么意思cl108k.com
什么是蜘蛛痣图片hcv8jop6ns3r.cn 什么是蓝颜知己hcv8jop7ns7r.cn 回族不吃什么hcv8jop4ns2r.cn 射手是什么星象shenchushe.com 幻视是什么意思hcv8jop4ns9r.cn
血脂六项包括什么hcv8jop0ns2r.cn 什么叫寓言故事hcv8jop4ns1r.cn 身份证借给别人有什么危害性hcv8jop8ns5r.cn 谈情说爱是什么意思hcv9jop2ns4r.cn nerf是什么意思hcv8jop1ns7r.cn
自律是什么意思xscnpatent.com 维生素e和维生素c一起吃有什么效果hanqikai.com 破处什么感觉bysq.com 溯溪是什么意思hcv9jop8ns1r.cn 上嘴唇长痘痘是什么原因hcv8jop4ns1r.cn
百度