{{sellerTotalView > 1 ? __("sellers", {number: sellerTotalView}) : __("seller", {number: sellerTotalView}) }}, {{numTotalView > 1 ? __("items", {number: numTotalView}) : __("item", {number: numTotalView}) }}
free FREE

Change Your Zip Code

Inventory information and delivery speeds may vary for different locations.

Location History

{{email ? __('Got it!') : __('Restock Alert')}}

We will notify you by email when the item back in stock.

Cancel
Yami

Jingdong book

代码审计:企业级Web代码安全架构

{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}

代码审计:企业级Web代码安全架构

{{__(":people-members", {'people': item.limit_people_count})}} {{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ item.invalid_price }} {{ itemDiscount }}
Ends in
{{ itemCurrency }}{{ item.valid_price }}
{{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }}
{{ itemDiscount }}
{{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }} {{ itemCurrency }}{{ item.invalid_price }} {{itemDiscount}}
{{ itemCurrency }}{{ item.valid_price }}
Sale ends in
Sale will starts after Sale ends in
{{ getSeckillDesc(item.seckill_data) }}
{{ __( "Pay with Gift Card to get sale price: :itemCurrency:price", { 'itemCurrency' : itemCurrency, 'price' : (item.giftcard_price ? priceFormat(item.giftcard_price) : '0.00') } ) }} ({{ itemCurrency }}{{ priceFormat(item.giftcard_price / item.bundle_specification) }}/{{ item.unit }}) Details
Best before

Currently unavailable.

We don't know when or if this item will be back in stock.

Unavailable in your area.
Sold Out

Details

Full product details
Editer Recommend

全方位介绍代码审计,从审计环境的准备到审计思路、工具的使用以及功能的安全设计原则,涵盖了大量工具和方法。

针对各种实际漏洞案例进行剖析,不仅分析了漏洞的成因,还给出了具体防御方案,方法简洁实用,讲解一针见血


代码审计是企业安全运营的基础,是安全从业者必备的基本技能。本书详细介绍代码审计的设计思路以及所需要的工具和方法,不仅用大量案例介绍了实用方法,而且剖析了各种代码安全漏洞的成因与预防策略。对应用开发人员和安全技术人员都有参考价值。

Content Description

代码审计是企业安全运营的重要步骤,也是安全从业者必备的基础技能。本书详细介绍代码审计的设计思路以及所需要的工具和方法,不仅用大量案例介绍了实用方法,而且剖析了各种代码安全问题的成因与预防方案。无论是应用开发人员还是安全技术人员都能从本书获益。
本书共分为三个部分。第一部分为代码审计前的准备,包括第1~2章,第1章详细介绍代码审计前需要了解的PHP核心配置文件以及PHP环境搭建的方法;第2章介绍学习PHP代码审计需要准备的工具,以及这些工具的详细使用方法。第二部分着重介绍PHP代码审计中的漏洞挖掘思路与防范方法,包括第3~8章,第3章详细介绍PHP代码审计的思路,包括根据关键字回溯参数、通读全文代码以及根据功能点定向挖掘漏洞的三个思路;第4~6章则介绍常见漏洞的审计方法,分别对应基础篇、进阶篇以及深入篇,涵盖SQL注入漏洞、XSS漏洞、文件操作漏洞、代码/命令执行漏洞、变量覆盖漏洞以及逻辑处理等漏洞;第7章介绍二次漏洞的挖掘方法;第8章介绍代码审计过程中的一些重要技巧。第三部分主要介绍PHP安全编程规范,从攻击者的角度来告诉你应该怎么写出更安全的代码,包括第9~12章,第9章介绍参数的安全过滤;第10章介绍PHP中常用的加密算法;第11章从设计安全功能的角度出发,从攻击者的角度详细分析常见功能通常会出现的安全问题以及解决方案;第12章介绍企业的应用安全体系建设,介绍横向细化策略和纵深防御策略的具体实施方法与典型案例。

Author Description

尹毅,网名Seay,阿里巴巴安全专家,Seay源代码审计系统作者,也是知名网络安全博客www。cnseay。com的博主,至今个人博客访问量超百万。他15岁便开始接触网络安全,致力于Web安全研究,开发了大量的安全工具,乐于分享,在代码审计和渗透测试方面有丰富的经验。
Catalogue

序言
前言
导读
第一部分代码审计前的准备
第1章代码审计环境搭建2
1.1wamp/wnmp环境搭建2
1.2lamp/lnmp环境搭建4
1.3PHP核心配置详解6
第2章审计辅助与漏洞验证工具14
2.1代码编辑器14
2.1.1Notepad++15
2.1.2UltraEdit15
2.1.3Zend Studio19
2.2代码审计工具21
2.2.1Seay源代码审计系统21
2.2.2Fortify SCA24
2.2.3RIPS25
2.3漏洞验证辅助27
2.3.1Burp Suite27
2.3.2浏览器扩展32
2.3.3编码转换及加解密工具36
2.3.4正则调试工具38
2.3.5SQL执行监控工具40
第二部分漏洞发现与防范
第3章通用代码审计思路46
3.1敏感函数回溯参数过程46
3.2通读全文代码50
3.3根据功能点定向审计64
第4章漏洞挖掘与防范(基础篇)68
4.1SQL注入漏洞68
4.1.1挖掘经验69
4.1.2漏洞防范74
4.2XSS漏洞77
4.2.1挖掘经验77
4.2.2漏洞防范82
4.3CSRF漏洞83
4.3.1挖掘经验83
4.3.2漏洞防范85
第5章漏洞挖掘与防范(进阶篇)88
5.1文件操作漏洞88
5.1.1文件包含漏洞88
5.1.2文件读取(下载)漏洞93
5.1.3文件上传漏洞95
5.1.4文件删除漏洞99
5.1.5文件操作漏洞防范100
5.2代码执行漏洞102
5.2.1挖掘经验102
5.2.2漏洞防范108
5.3命令执行漏洞108
5.3.1挖掘经验109
5.3.2漏洞防范112
第6章漏洞挖掘与防范(深入篇)114
6.1变量覆盖漏洞114
6.1.1挖掘经验115
6.1.2漏洞防范121
6.2逻辑处理漏洞122
6.2.1挖掘经验122
6.2.2漏洞防范130
6.3会话认证漏洞131
6.3.1挖掘经验131
6.3.2漏洞防范135
第7章二次漏洞审计136
7.1什么是二次漏洞136
7.2二次漏洞审计技巧137
7.3dedecms二次注入漏洞分析137
第8章代码审计小技巧142
8.1钻GPC等转义的空子142
8.1.1不受GPC保护的$_SERVER变量142
8.1.2编码转换问题143
8.2神奇的字符串146
8.2.1字符处理函数报错信息泄露146
8.2.2字符串截断148
8.3php:// 输入输出流150
8.4PHP代码解析标签153
8.5fuzz漏洞发现154
8.6不严谨的正则表达式156
8.7十余种MySQL报错注入157
8.8Windows FindFirstFile利用161
8.9PHP可变变量162
第三部分PHP安全编程规范
第9章参数的安全过滤166
9.1第三方过滤函数与类166
9.1.1discuz SQL安全过滤类分析167
9.1.2discuz xss标签过滤函数分析173
9.2内置过滤函数175
第10章使用安全的加密算法177
10.1对称加密177
10.1.13DES加密178
10.1.2AES加密180
10.2非对称加密183
10.3单向加密185
第11章业务功能安全设计187
11.1验证码187
11.1.1验证码绕过187
11.1.2验证码资源滥用191
11.2用户登录192
11.2.1撞库漏洞192
11.2.2API登录193
11.3用户注册194
11.4密码找回195
11.5资料查看与修改197
11.6投票/积分/抽奖198
11.7充值支付200
11.8私信及反馈200
11.9远程地址访问202
11.10文件管理204
11.11数据库管理205
11.12命令/代码执行206
11.13文件/数据库备份207
11.14API208
第12章应用安全体系建设211
12.1用户密码安全策略211
12.2前后台用户分表213
12.3后台地址隐藏215
12.4密码加密存储方式216
12.5登录限制218
12.6API站库分离218
12.7慎用第三方服务219
12.8严格的权限控制220
12.9敏感操作多因素验证221
12.10应用自身的安全中心223
参考资源227

Introduction

代码审计是指对源代码进行检查,寻找代码中的bug,这是一项需要多方面技能的技术,包括对编程的掌握、漏洞形成原理的理解,系统和中间件等的熟悉。
为什么需要代码审计
代码审计是企业安全运营以及安全从业者必备的基础能力。代码审计在很多场景中都需要用到,比如企业安全运营、渗透测试、漏洞研究等。目前已经有不少公司在推广微软的软件SDL(Security Development Lifecycle,安全开发周期),它涵盖需求分析→设计→编码→测试→发布→维护,安全贯穿整个软件开发周期,其中设计、编码和测试是整个SDL的核心,安全问题大多在这里被解决掉。其中在安全设计这块,必须要非常了解漏洞形成原理,纵观全局。而在代码实现也就是编码阶段,安全依靠于编程人员的技术基础以及前期安全设计的完善性。然后是测试,测试包括白盒测试。黑盒测试以及灰盒测试。黑盒测试也叫功能测试,是指在不接触代码的情况下,测试系统的功能是否有bug,是否满足设计需求。而白盒测试就是我们说的代码审计,以开放的形式从代码层面寻找bug,如果发现有bug则返回修复,直到没有bug才允许软件发布上线。
渗透测试人员掌握代码审计是非常重要的,因为我们在渗透过程中经常需要针对目标环境对payload进行调试。另外,如果通过扫描器扫描到Web目录下的一个源码备份包,通常攻击者都会利用源码包找一些配置文件,因为里面有数据库、API等一类配置。如果环境有限制,比如目标站数据库限制连接IP等,那么工具小子可能在源码包进行的漏洞利用也就到此为止。对于懂代码审计的人,结果完全不一样,他可以对源码包进行安全审计,发现网站代码里存在的漏洞,然后利用挖掘到的漏洞进行渗透。
编程能力要求
代码审计对编程语言的基础有一定要求,至少要能看得懂代码,这里说的看懂代码不是简单地理解几个if...else语句和for循环,而是能看懂代码的逻辑,即使有很多函数没见过,也是可以到Google去查的。都说编程在语言这块是一通百通,只要我们对编程思想理解得非常透彻,重新接触一种编程语言也是非常快就能上手的,所以不管你之前写过Java还是C#程序,想玩一玩PHP的代码审计都应该不是什么大问题。
代码审计环境准备
代码审计首先要准备的是审计环境工具,不同的环境会影响漏洞的利用,所以建议Linux和Windows系统下的PHP环境都搭建一套,并且需要多个PHP版本。关于版本切换这块,建议安装phpStudy,phpStudy是一套Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader的集成环境,可以很方便地安装和切换环境。代码审计的工具有很多个,这里推荐使用笔者开发的Seay源代码审计系统以及RIPS,二者都是免费开源工具。
除了自动化审计工具外,还有一些像Burp Suite、浏览器扩展以及编码工具等审计辅助工具也都是必备的。
代码审计思路
通常做代码审计都是检查敏感函数的参数,然后回溯变量,判断变量是否可控并且没有经过严格的过滤,这是一个逆向追踪的过程。而代码审计并非这一种手段,还可以先找出哪些文件在接收外部传入的参数,然后跟踪变量的传递过程,观察是否有变量传入到高危函数里面,或者传递的过程中是否有代码逻辑漏洞,这是一种正向追踪的方式,这样的挖掘方式比逆向追踪挖掘得更全。还有一种方式是直接挖掘功能点漏洞,根据自身的经验判断该类应用通常在哪些功能中会出现漏洞,直接全篇阅读该功能代码。
可能不少新手对于学习PHP代码审计还有一些迷茫,或许之前尝试过学习,但一直没有很好的进展,因为代码审计是一门很专的技术活,要学好PHP代码审计,需要掌握以下几点:
PHP编程语言的特性和基础。
Web前端编程基础。
漏洞形成原理。
代码审计思路。
不同系统、中间件之间的特性差异。
导读Introduction
本书总共分为三个部分。第一部分为代码审计前的准备,包括第1章以及第2章,第1章详细介绍我们在学习代码审计前需要了解的PHP核心配置文件以及PHP环境搭建的方法,第2章介绍学习PHP代码审计需要准备的工具,以及这些工具的详细使用方法。
第二部分包括第3~8章,着重介绍PHP代码审计中的漏洞挖掘思路与防范方法。
第3章详细介绍PHP代码审计的思路,包括根据关键字回溯参数、通读全文代码以及根据功能点定向挖掘漏洞的三个思路。
第4~6章讲述常见漏洞的审计方法,分别对应基础篇、进阶篇以及深入篇,涵盖SQL注入漏洞、XSS漏洞、文件操作漏洞、代码/命令执行漏洞、变量覆盖漏洞以及逻辑处理等漏洞。
第7章介绍二次漏洞的挖掘方法,二次漏洞在逻辑上比常规漏洞要复杂,所以我们需要单独拿出来,以实例来进行介绍。
在经过前面几章的代码审计方法学习之后,相信大家已经能够挖掘不少有意思的漏洞。第8章将会介绍代码审计中的更多小技巧,利用这些小技巧可以挖掘到更多有意思的漏洞。每类漏洞都有多个配套的真实漏洞案例分析过程,有助于读者学习代码审计的经验。不过,该章不仅介绍漏洞的挖掘方法,还详细介绍这些漏洞的修复方法,对开发者来说,这是非常有用的一部分内容。
第三部分包括第9~12章,主要介绍PHP安全编程的规范,从攻击者的角度来告诉你应该怎么写出更安全的代码,这也是本书的核心内容:让代码没有漏洞。第9章主要介绍参数的安全过滤,所有的攻击都需要有输入,所以我们要阻止攻击,第一件要做的事情就是对输入的参数进行过滤,该章详细分析discuz的过滤类,用实例说明什么样的过滤更有效果。
第10章主要介绍PHP中常用的加密算法。目前99%以上的知名网站都被拖过库,泄露了大量的用户数据,而这一章将详细说明使用什么样的加密算法能够帮助你增强数据的安全性。
第11章涉及安全编程的核心内容。所有的应用都是一个个功能堆砌起来的,该章从设计安全功能的角度出发,从攻击者的角度详细分析常见功能通常会出现的安全问题,在分析出这些安全问题的利用方式后,再给出问题的解决方案。如果你是应用架构师,这些内容能够帮助你在设计程序功能的时候避免这些安全问题。
第12章介绍应用安全体系建设的两种策略以及实现案例:横向细化和纵深策略,企业的应用安全应把这两种策略深入到体系建设中去。
以上就是本书的全部内容,看到介绍之后你是不是有点儿兴奋呢?赶紧来边读边试吧。
感言和致谢
这本书断断续续写了一年多,期间也发生了很多事情。在2014年9月的时候从创新工场旗下项目安全宝离职,加入到阿里巴巴安全部。到了一个新的环境,工作上面倒是很快就融入了进去,只是从北京到杭州,是从一个快节奏的城市转到一个慢节奏的城市,感觉整个人变懒了,没有以前在北京那样每天激情澎湃。曾经一度想过放弃,因为心里总感觉像是被捆住了一样,想去做一些事情却因为还有这本书没写完而不能去做。因为写这本书是我必须要做的事情,一是算是给我自己在安全领域的一个交代,二是我承诺过吴怡编辑,一定会努力写好这本书,在这个事情上我看得很严肃,承诺了就一定要做到。
为什么说这算是给自己在安全领域的一个交代呢?记得跟不少朋友说过,创业是我必定要做的一个事情,或许哪天转行创业了,在这个行业里留下了点东西也心安了。回想自己从最初迷恋上网络安全到现在,中间的一些转折点和小插曲还挺有意思,比如以全校第一的成绩考上重点高中之后,读了一年就退学去离家很远的软件开发培训学校,花500块钱在网吧淘了一台放酷狗都卡得不行的台式机,在重庆连续通宵读书快一年,等等,这些都已经是美好的回忆。在这些美好回忆中遇到很多美好的人,想对他们说声谢谢。
感谢父母和姐姐、姐夫,最早去重庆的时候,姐姐还怀着马上要出生的外甥女,跟姐夫开车送我去重庆。学校一个学期一两万的学费,父母预支薪水供我读书,感谢他们的付出。
感谢机械工业出版社的吴怡编辑,如果没有她的鼓励和指导,也不会有这本书的面世,真心感谢她。
感谢吴瀚清(网名:刺、道哥、大风),在安全宝的时间里,刺总给了我很多帮助,不管是工作上还是个人成长上都给予引导和包容,他是一位真正的好老板。
感谢safekey team的兄弟们,他们是晴天小铸、tenzy、x0h4ck3r、zvall、yy520以及cond0r,本书里面有多个影响非常大的0day出自他们之手,我们因为喜欢代码审计而聚集在一起。
感谢曾经陪我熬了无数个通宵的好哥们Snow、小软,我们曾经一起渗透,一起研究,一起写代码,无不分享。
感谢工作中同我一起奋斗的同事们,没有他们的辛苦战斗就没有今天我们攻城拔寨的辉煌战绩,他们包括但不限于:翁国军、李翼、全龙飞、曾欢。
感谢喜付宝的林能(ID:矢志成谜)对本书提出的建设性建议。

Specifications

Brand Jingdong book
Brand Origin China

Disclaimer

Product packaging, specifications and price are subject to change without notice. All information about the products on our website is provided for information purposes only. Please always read labels, warnings and directions provided with the product before use.

View Full Terms of Use
Add to favorites
{{ $isZh ? coupon.coupon_name_sub : coupon.coupon_ename_sub | formatCurrency }}
{{__("Buy Directly")}} {{ itemCurrency }}{{ item.directly_price }}
Quantity
{{ quantity }}
{{ instockMsg }}
{{ limitText }}
{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}
Sold by JD@CHINA
Ship to
{{ __("Ship to United States only") }}
Free shipping over 69
Genuine guarantee

Added to Cart

Keep Shopping

More to Consider

{{ item.brand_name }}

{{ item.item_name }}

{{ item.currency }}{{ item.market_price }}

{{ item.currency }}{{ item.unit_price }}

{{ item.currency }}{{ item.unit_price }}

Coupons

{{ coupon.coupon_name_new | formatCurrency }}
Clip Clipped Over
{{ getCouponDescStr(coupon) }}
{{ coupon.use_time_desc }}
Expires soon {{ formatTime(coupon.use_end_time) }}

Share this item with friends

Cancel

Yami Gift Card

Get this exclusive deal when paying with gift card

Terms and Conditions

Gift card deals are special offers for selected products;

The gift card deals will automatically be activated if a customer uses gift card balance at check out and the balance is sufficient to pay for the total price of the shopping cart products with gift card deals;

You will not be able to activate the gift card deals if you choose other payment methods besides gift card. The products will be purchased at their normal prices;

If your account balance is not enough to pay for the products with gift card deals, you can choose to reload your gift card balance by clicking on the Reload button at either shopping cart page or check out page;

Products that have gift card deals can be recognized by a special symbol showing 'GC Deal';

For any additional questions or concerns, please contact our customer service;

Yamibuy reserves the right of final interpretation.

Sold by Yami

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

Yami is committed to provide our customers with a peace of mind when purchasing from us. Most items shipped from Yamibuy.com can be returned within 30 days of receipt of shipment (For Food, Beverages, Snacks, Dry Goods, Health supplements, Fresh Grocery and Perishables Goods, within 7 days of receipt of shipment due to damages or quality issues; To ensure that every customer receives safe and high-quality products, we do not provide refunds or returns for beauty products once they have been opened or used, except in the case of quality issues; Some products may have different policies or requirements associated with them, please see below for products under special categories, or contact Yami Customer Service for further assistance).
Thank you for your understanding and support.

Learn More

Sold by Yami

Terms and Conditions of Yami E-Gift Card

If you choose “Redeem automatically” as your delivery method, your gift card balance will be reload automatically after your order has been processed successfully;

If you choose “Send to Email”as your delivery method, the card number and CVV will be sent to the email address automatically;

Any user can use the card number and CVV to redeem the gift card, please keep your gift card information safely. If you have any trouble receiving email, please contact Yami customer service;

Yami gift card can be used to purchase both Yami owned or Marketplace products;

Yami gift card will never expire;

Yami gift card balance does not have to be used up at once;

All rights reserved by Yami.

Return Policy

Gift card that has already been consumed is non-refundable.

Sold by JD@CHINA

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Sold by JD@CHINA

Service Guarantee

Yami Cross-store Free Shipping over $69
Yami 30-days Return

Yami-China FC

Yami has a consolidation warehouse in China which collects multiple sellers’ packages and combines to one order. Our Yami consolidation warehouse will directly ship the packages to your door. Cross-store free shipping over $69.

Return Policy

You may return products within 30 days upon receiving the products. Sellers take responsibilities for any wrong shipment or missing items. Packing needs to be unopened for any other than quality issues return. We promise to pack carefully, but because goods are taking long journey to destinations, simple damages to packaging may occur. Any damages not causing internal goods quality problems are not allowed to return. If you open the package and any quality problem is found, please contact customer service within three days after receipt of goods.

Shipping Information

Yami Consolidation Service Shipping Fee $9.99(Free shipping over $69)

Sellers in China will ship their orders within 1-2 business days once the order is placed. Packages are sent to our consolidation warehouse in China and combined there. Our Yami consolidation warehouse will directly ship the packages to you via UPS. The average time for UPS to ship from China to the United States is about 10 working days and it can be traced using the tracking number. Due to the pandemic, the delivery time may be delayed by about 5 days. The package needs to be signed by the guest. If the receipt is not signed, the customer shall bear the risk of loss of the package.

Sold by JD@CHINA

Service Guarantee

Free shipping over 69
Genuine guarantee

Shipping

Yami Consolidated Shipping $9.99(Free shipping over $69)


Seller will ship the orders within 1-2 business days. The logistics time limit is expected to be 7-15 working days. In case of customs clearance, the delivery time will be extended by 3-7 days. The final receipt date is subject to the information of the postal company.

Yami Points information

All items are excluding from any promotion or points events on Yamibuy.com

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Yami

Download the Yami App

Back Top

Recommended for You

About the brand

Jingdong book

为您推荐

Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折

Reviews{{'('+ commentList.posts_count + ')'}}

Have your say. Be the first to help other guests.

Write a review
{{ totalRating }} Write a review
  • {{i}} star

    {{i}} stars

    {{ parseInt(commentRatingList[i]) }}%

Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}
Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}

No related comment~

Review

Yami Yami

{{ showTranslate(commentDetails) }}Show Less

{{ strLimit(commentDetails,800) }}Show more

Show Original

{{ commentDetails.content }}

Yami
Show All

{{ formatTime(commentDetails.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ commentDetails.likes_count }} {{ commentDetails.likes_count }} {{ commentDetails.reply_count }} {{commentDetails.in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Comments{{'(' + replyList.length + ')'}}

Yami Yami

{{ showTranslate(reply) }}Show Less

{{ strLimit(reply,800) }}Show more

Show Original

{{ reply.reply_content }}

{{ formatTime(reply.reply_in_dtm) }}

{{ reply.reply_likes_count }} {{ reply.reply_likes_count }} {{ reply.reply_reply_count }} {{reply.reply_in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Cancel

That’s all the comments so far!

Write a review
How would you rate this item?

Please add your comment.

  • A nice nickname will make your comments more popular!
  • The nickname in your account will be changed to the same as here.
Thanks for your review
Our community rely on great reviews like yours to find the best of Asia.

Report

If you find this content inappropriate and think it should be removed from the Yami.com site, let us know please.

Cancel

Are you sure to delete your review?

Cancel

You’ve Recently Viewed

About the brand

Jingdong book