首页 文章 精选 留言 我的

精选列表

搜索[CVE漏洞],共10000篇文章
优秀的个人博客,低调大师

标记(TAG)您的漏洞扫描(CSS)资源

标签的基本知识 标签是资源Meta信息,标签是一些充当元数据的词和短语,支持用户自定义和系统预制。每个标签都包含一个键(Key)和一个值(Value)。标签是一种资源的属性描述。 标签与资源是 多对多的关系。 标签可让您按各种标准(例如用途、所有者或环境)对 阿里云 资源进行分类。这在您具有相同类型的许多资源时会很有用,您可以根据分配给资源的标签快速识别特定资源。 标签对阿里云资源没有任何语义意义,应严格按字符串进行解析。同时,标签不会自动分配至您的资源。您可以修改标签的key和value,还可以随时删除资源的标签。您可以将标签的值设为空的字符串,但是不能将其设为空值。如果您添加的标签的值与该实例上现有标签的值相同,新的值就会覆盖旧值。如果删除资源,资源的所有标签也会被删除。 可以使用管理控制台 和 API 处理标签。 标签设计详情见最佳实践 标签的限制 最大键(key)长度:128 个 Unicode 字符 最大值(value)长度:128 个 Unicode 字符 同一个资源上的同一个键只能有一个标签。如果您尝试添加现有标签 (相同键),现有标签值会更新为新值。 允许的字符包括 Unicode 字母、空格和数字,以及以下特殊字符为 匹配这些中文标点符号 。?!,、;:“ ” ‘ ’( ) 《 》 〈 〉 【 】 『 』 「 」 ﹃ ﹄ 〔 〕 … — ~ ﹏ ¥ 匹配这些英文标点符号 -.!@#$%?/^&*)(+={}[]",'<>~·`?:;|_ 每个资源的最大 自定义 标签数:20 键(key)不支持 aliyun、acs: 开头。 不允许包含http:// 和 https:// 。不允许为空字符串。 值(value)不允许包含http:// 和 https:// 。允许为空字符串。 标记您的资源 您可以标记新的或现有的 ECI 容器组(ContainerGroup) 通过API: 为资产添加标签 AddAssets 通过标签过滤资产DescribeUserTags 查询用户标签 DescribeUserTags 通过控制台 通过控制台对标签进行操作步骤请看官方文档标签分组 相关文档 基于OOS批量修改资源标签(TAG)值(Value)强制TAG——必须带标签创建ECS 资源ECS支持跨地域跨资源类型的标签(TAG)操作如何检查您的资源是否具有您指定的标签?基于标签批量管理资源支持标签产品及其文档标签的最佳实践通过OOS基于标签批量启动ECS实例实践如何使用标签控制对ECS 资源的访问?使用标签检索资源创建资源标签分组设置ECS全局标签实践ECS控制台云资源分组管理---全局标签标记您的MongoDB数据库实例标记您的 CDN 资源——域名(domain)标记您的 OSS 资源标记您的 RDS 资源标记您的 SLB 资源标记您的 ECS 资源标记您的redis数据库实例标记您的弹性容器实例(ECI)资源

优秀的个人博客,低调大师

fastjson漏洞导致服务瘫痪,先别忙升级

1、背景 2019年9月5日,fastjson修复了当字符串中包含\x转义字符时可能引发OOM的问题。建议广大用户升级fastjson版本至少到1.2.60。 一个bug这么恐怖,竟然直接OOM,亲身体验下吧。测试代码如下: JSON.parse("[{\"a\":\"a\\x]"); 实验效果:4分钟 堆内存 占用上升达2G; 这么牛掰,甲方爸爸高度重视,火速把自己负责的服务的fastjson版本升级到1.2.60,线上运行也相安无事。 如果这就结束了,本文也就不用写了。⊙﹏⊙‖∣ 2、fastjson升级后业务异常 fastjson升级几天后,一老系统业务发生异常,异常信息如下: Exception in thread "xxx" com.alibaba.fastjson.JSONException: expect ':' at 0, actual = at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:290) at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1380) at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1346) at com.alibaba.fastjson.JSON.parse(JSON.java:156) at com.alibaba.fastjson.JSON.parse(JSON.java:166) at com.alibaba.fastjson.JSON.parse(JSON.java:135) at com.alibaba.fastjson.JSON.parseObject(JSON.java:227) at alibaba.fastjson.FastJsonBug.main(FastJsonBug.java:70) 看这错误,肯定是json字符串格式有误,应该是冒号的地方实际上是等号了,然后导致反序列化异常,果断排查接口入参,结果入参一切正常。纳尼。。。 好吧,那就本地debug吧,结果竟然在本地复现异常了,震惊!!!再次检查接口入参,没有问题,和以前正常运行的入参是一致的。想到最近升级fastjson了,还原fastjson版本试试吧。还原后还真是正常了!!! 难道fastjson版本升级出了大bug? 本着对阿里技术的信任,我决定一探究竟。 3、一探究竟 待反序列化的数据,其格式是2层List嵌套,测试代码已做脱敏处理(完整源码见后文github地址): String json = "{\"bvos\":[{\"names\":[\"zxiaofan\"]}]}"; JSONObject jsonObjectB1 = GSON.fromJson(json, JSONObject.class); JSONArray jsonArrayB = jsonObjectB1.getJSONArray("bvos"); JSONObject jsonObjectB2 = JSONObject.parseObject(jsonArrayB.get(0).toString()); // 上面这行代码直接异常了,异常信息如下: // com.alibaba.fastjson.JSONException: expect ':' at 0, actual = 好奇宝宝们就不要纠结于为什么没有定义好实体再使用TypeReference一步到位啦,千年老代码确实是这样的,这也不是本文的重点。 经过debug发现,jsonArrayB.get(0).toString()的值是 {names=[zxiaofan]}。注意了,names后面是等号,不是冒号,这也就能解释为什么异常是“expect ':' at 0, actual =”了。 但为什么升级后就异常,没升级就一切正常呢?继续研究下,梳理后发现如下值得注意的地方: 1、fastjson版本时1.2.54时正常,大于1.2.54后便会异常; 2、运行代码是Google的Gson和阿里的fastjson混用的(json处理全部换成fastjson一切正常); 莫非,是fastjson升级后和Google的Gson不兼容导致? 仿佛看到了曙光。 对比分析了fastjson 1.2.54版本和其之后的版本(以下以1.2.55版本为例),发现getJSONArray(String key)还真有区别。 // fastjson <version>1.2.54</version> public JSONArray getJSONArray(String key) { Object value = this.map.get(key); if (value instanceof JSONArray) { return (JSONArray)value; } else { return value instanceof String ? (JSONArray)JSON.parse((String)value) : (JSONArray)toJSON(value); } } // fastjson <version>1.2.55</version> public JSONArray getJSONArray(String key) { Object value = this.map.get(key); if (value instanceof JSONArray) { return (JSONArray)value; } else if (value instanceof List) { return new JSONArray((List)value); } else { return value instanceof String ? (JSONArray)JSON.parse((String)value) : (JSONArray)toJSON(value); } } 经过调试后发现,1.2.54版本在getJSONArray(String key)方法中使用的是(JSONArray)toJSON(value),而1.2.55版本在getJSONArray(String key)方法中使用的是return new JSONArray((List)value)。两者处理后返回的数据也确实不同。 fastjson 1.2.54 版本: fastjson 1.2.55 版本: 从调试情况看,1.2.54版本最终返回的是JSONObect,1.2.55版本返回的是LinkedTreeMap。Map结构toString()的结构肯定是“key=value”,而不是json结构。 但是如果将测试代码中的GSON.fromJson替换成JSON.parseObject,那么不论fastjson的版本高低,都能正常运行。 至此,我们知道了,fastjson在升级到1.2.55及以上版本后,getJSONArray方法对Google的Gson处理后的数据兼容性降低,或许本文的名字叫做《fastjson与Gson混用引发的bug》更合适。 也不知道这算不算是bug,给官方提了个issue: > fastjson版本升级降低了对Gson的兼容性 #2814。 4、学习下fastjson对各种数据类型的处理 在分析的过程中,看了fastjson中getJSONArray方法对各种数据类型的处理方式,和自己以前写的类似代码相比fastjson的代码更优雅,值得学习。相关方法com.alibaba.fastjson.JSON.toJSON(),有兴趣的同学可以看看。 // 此处代码仅展示核心结构,如需查阅完整代码请前往github/fastjson查看。 // toJSON简直是 数据类型分类处理的模板。@zxiaofan @SuppressWarnings("unchecked") public static Object toJSON(Object javaObject, SerializeConfig config) { if (javaObject == null) { return null; } if (javaObject instanceof JSON) { return javaObject; } if (javaObject instanceof Map) { if (map instanceof LinkedHashMap) { } else if (map instanceof TreeMap) { } else { innerMap = new HashMap(size); } return json; } if (javaObject instanceof Collection) { for (Object item : collection) { } return array; } if (javaObject instanceof JSONSerializable) { return JSON.parse(json); } Class<!--?--> clazz = javaObject.getClass(); if (clazz.isEnum()) { return ((Enum<!--?-->) javaObject).name(); } if (clazz.isArray()) { for (int i = 0; i &lt; len; ++i) { } return array; } if (ParserConfig.isPrimitive2(clazz)) { return javaObject; } ObjectSerializer serializer = config.getObjectWriter(clazz); if (serializer instanceof JavaBeanSerializer) { return json; } String text = JSON.toJSONString(javaObject); return JSON.parse(text); } 5、总结 正如文中总结,fastjson在升级到1.2.55及以上版本后,getJSONArray方法对Google的Gson处理后的数据兼容性降低,或许本文的名字叫做《fastjson与Gson混用引发的bug》更合适。 代码规范:同一模块代码不允许混用Json解析工具; 保持敬畏:生产发布,一定要保持敬畏,对变更充分回归; 问题很简单,重要的是思考方式,在寻找答案的过程中学到更多。 > 敬畏生命,敬畏职责,敬畏规章。 当你认为没有错误的时候,错误一定会来找你。 --《中国机长》 本文相关分析代码:https://github.com/zxiaofan/OpenSource_Study/blob/master/fastjson/src/main/java/alibaba/fastjson/FastJsonBug.java >祝君好运! Life is all about choices! 将来的你一定会感激现在拼命的自己! 【CSDN】【GitHub】【OSCHINA】【掘金】【微信公众号】

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册