精华内容
下载资源
问答
  • 代码审计是在经过黑盒测试完毕,也就是检查应用基本功能是否符合产品业务需求下进行。需要有一定编码基础以及对漏洞形成原理基本认知,通过工具或者经验检测代码中可能出现bug,并在不同平台(windows,...

    前言

           代码审计是在经过黑盒测试完毕,也就是检查应用的基本功能是否符合产品业务需求下进行的。需要有一定的编码基础以及对漏洞形成原理的基本认知,通过工具或者经验检测代码中可能出现的bug,并在不同平台(windows,linux),不同PHP版本下测试。比如PHP的很多新版本会对一些指令废弃删除,但是在旧版本中却能使用,而该版本下的指令即有可能会被人发现漏洞。

     

    PHP核心配置

          PHP配置对于大多数人都是通过php.ini设置,但其实是有配置范围的,比如一些指令配置只能通过php.ini配置,也有一些可以在PHP脚本中设置,通过ini_set()函数,详细可以查询PHP_INI.*的列表和ini_set使用方法。

     

    代码审计工具

    1.seay源代码审计工具(公众号回复"审计"可获取)

     

    2. HackBar漏洞验证辅助(火狐浏览器扩展)

    代码审计思路

    1. 查看敏感函数追踪参数

    2. 全部通读一遍源码了解逻辑

    3. 按功能点审计追踪

     

    常见的几种漏洞类型

    1. SQL注入

    2. XSS漏洞(跨站脚本攻击)

    3. CSRF漏洞(跨站请求伪造)

    4. 文件操作漏洞

    5. 代码执行漏洞

    6. 命令执行漏洞

    7. 变量覆盖漏洞

    8. 业务逻辑漏洞

    9. 越权与提权

    10. 二次注入

    11. ……等等

     

    小结&待续

           由于在代码审计中会涉及到很多知识点,所以这里只先总结一个引文。了解几种常见的漏洞类型,而这些漏洞也都有特定的例子可以挖掘,需要在工作或学习中不断积累分析,并且找到最好的防范方案解决。比如程序中需要注意接收与输出。获取用户提交过来的数据或操作,都说:”不要相信用户的任何操作”。用户可能只是一个脚本,自然就存在XSS,爆破,CSRF,操作越权等等的风险。而输入可能是由我们接收完用户输入直接反射性输出或把接收数据存储后再根据业务逻辑存储型输出。所以每一个函数或方法编写时对参数的校验过滤以及返回值的转换处理等等都必不可少。而应用的功能点比如评论,登陆注册,找回密码,获取验证码,上传文件图片,提现抽奖,积分等都最会是别人盯上找漏洞的地方,除了通过限制次数,IP防止暴力登陆往往还不够。单说获取IP地址,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR,REMOTE_ADDR都可以获取,而前两者可以使用http header伪造,这时候对于一个IP的真实性需要比较一下这三种获取方式的不同点再来实现功能。还有验证码,有图片验证,滑动验证,语音验证,短信验证等,但网上也存在图片识别,打码平台相应的工具。只能说防范手段在升级,漏洞也在不断升级,代码审计必不可少。

    展开全文
  • 前言 代码审计是在经过黑盒测试完毕,也就是检查应用基本功能是否符合产品业务需求下进行。需要有一定编码基础以及对漏洞形成原理基本认知,通过工具或者经验检测中代码中可能出现bug。在不同平台(windows...

    前言

    代码审计是在经过黑盒测试完毕,也就是检查应用的基本功能是否符合产品业务需求下进行的。需要有一定的编码基础以及对漏洞形成原理的基本认知,通过工具或者经验检测中代码中可能出现的bug。在不同平台(windows,linux),不同PHP版本下测试,比如PHP的很多新版本会对一些指令废弃删除,但是在旧版本中却能使用,而该版本下的指令即有可能会被人发现漏洞。

    PHP核心配置

    PHP配置对于大多数人都是通过php.ini设置,但其实是有配置范围的,比如一些指令配置只能通过php.ini配置,也有一些可以在PHP脚本中设置,通过ini_set()函数,详细可以查询PHP_INI.*的列表和ini_set使用方法。

    代码审计工具

    1.seay源代码审计工具

    ad4250d25237db69074dee731989e59b.png

    2. HackBar漏洞验证辅助(火狐浏览器扩展)

    37ea2d1512cad7dc4f3056247678bb26.png

    代码审计思路

    1. 查看敏感函数追踪参数

    2. 全部通读一遍源码了解逻辑

    3. 按功能点审计追踪

    常见的几种漏洞类型

    1. SQL注入

    2. XSS漏洞(跨站脚本攻击)

    3. CSRF漏洞(跨站请求伪造)

    4. 文件操作漏洞

    5. 代码执行漏洞

    6. 命令执行漏洞

    7. 变量覆盖漏洞

    8. 业务逻辑漏洞

    9. 越权与提权

    10. 二次注入

    11. ……等等

    d8b87de137df298e80458ca1cd478d43.png

    小结&待续

    由于在代码审计中会涉及到很多知识点,所以这里只先总结一个引文。了解几种常见的漏洞类型,而这些漏洞也都有特定的例子可以挖掘,需要在工作或学习中不断积累分析,并且找到最好的防范方案解决。比如程序中需要中需要注意的就是接收与输出。接收是获取用户提交过来的数据或操作,先人经验说:”不要相信用户的任何操作”。所以用户可能是一个脚本,自然就存在XSS,爆破,CSRF,操作越权等等的风险。而输入可能是由我们接收完用户输入直接反射性输入或把接收数据存储后再根据业务逻辑存储型输出。所以每一个函数或方法编写时对参数的校验过滤以及返回值的转换处理等等都必不可少。而应用的功能点比如评论,登陆注册,找回密码,获取验证码,上传文件图片,提现抽奖,积分等都最会是别人盯上找漏洞的地方,除了通过限制次数,IP防止暴力登陆往往还不够。单说获取IP地址,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR,REMOTE_ADDR都可以获取,而前两者可以使用http header伪造,这时候对于一个IP的真实性需要比较一下这三种获取方式的不同点再来实现功能。还有验证码,有图片验证,滑动验证,语音验证,短信验证等,但网上也存在图片识别,打码平台相应的工具。只能说防范手段在升级,漏洞也在不断升级,代码审计必不可少。

    展开全文
  • 常见的异常种类

    2017-04-23 00:32:00
    一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 详细分解: 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码代码 说明 100 (继续) ...

    一些常见的状态码为:

    200 - 服务器成功返回网页
    404 - 请求的网页不存在
    503 - 服务不可用
    详细分解:

    1xx(临时响应)
    表示临时响应并需要请求者继续执行操作的状态代码。

    代码 说明
    100 (继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
    101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。

    2xx (成功)
    表示成功处理了请求的状态代码。

    代码 说明
    200 (成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
    201 (已创建) 请求成功并且服务器创建了新的资源。
    202 (已接受) 服务器已接受请求,但尚未处理。
    203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
    204 (无内容) 服务器成功处理了请求,但没有返回任何内容。
    205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。
    206 (部分内容) 服务器成功处理了部分 GET 请求。

    3xx (重定向)
    表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。

    代码 说明
    300 (多种选择) 针对请求,服务器可执行多种操作。服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
    301 (永久移动) 请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
    302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
    303 (查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
    304 (未修改) 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
    305 (使用代理) 请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
    307 (临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

    4xx(请求错误)
    这些状态代码表示请求可能出错,妨碍了服务器的处理。

    代码 说明
    400 (错误请求) 服务器不理解请求的语法。
    401 (未授权) 请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
    403 (禁止) 服务器拒绝请求。
    404 (未找到) 服务器找不到请求的网页。
    405 (方法禁用) 禁用请求中指定的方法。
    406 (不接受) 无法使用请求的内容特性响应请求的网页。
    407 (需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
    408 (请求超时) 服务器等候请求时发生超时。
    409 (冲突) 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
    410 (已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
    411 (需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
    412 (未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
    413 (请求实体过大) 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
    414 (请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
    415 (不支持的媒体类型) 请求的格式不受请求页面的支持。
    416 (请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
    417 (未满足期望值) 服务器未满足"期望"请求标头字段的要求。

    5xx(服务器错误)
    这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

    代码 说明
    500 (服务器内部错误) 服务器遇到错误,无法完成请求。
    501 (尚未实施) 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
    502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
    503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
    504 (网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
    505 (HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 协议版本。

     

    HttpWatch状态码Result is

    200 - 服务器成功返回网页,客户端请求已成功。
    302 - 对象临时移动。服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
    304 - 属于重定向。自上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
    401 - 未授权。请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
    404 - 未找到。服务器找不到请求的网页。
    2xx - 成功。表示服务器成功地接受了客户端请求。
    3xx - 重定向。表示要完成请求,需要进一步操作。客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。
    4xx - 请求错误。这些状态代码表示请求可能出错,妨碍了服务器的处理。
    5xx - 服务器错误。表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。

    转载于:https://www.cnblogs.com/cs071122/p/6750450.html

    展开全文
  • 常见的测试种类

    2020-03-08 16:13:34
    一.单元测试(模块测试) 单元测试是对软件组成单元进行测试。...测试依据:代码和注释+详细设计文档 测试方法:白盒测试(因为要测源码) 测试内容:模块接口测试(测试模块里面参数传递是否...

    一.单元测试(模块测试)

    单元测试是对软件组成单元进行测试。其目的是检验软件组成单位的正确性。测试对象是:模块

    对模块进行测试,单独的一个模块测试,属于静态测试的一类

    • 测试阶段:编码后或者编码前(TDD)
    • 测试对象:最小模块
    • 测试人员:白盒测试工程师或开发工程师(测源码)
    • 测试依据:代码和注释+详细设计文档
    • 测试方法:白盒测试(因为要测源码)
    • 测试内容:模块接口测试(测试模块里面的参数传递是否正确)、局部数据结构测试(测试变量的作用域范围)、路径测试(if-else 判断必须覆盖所有分支)、错误处理测试、边界测试( for 循环)

    例如:

    手机功能有很多,女孩子都喜欢用美颜功能,突然有一天美颜功能不可用了,怎么办?只针对这一功能的代码进行测试。

    二.集成测试

    集成测试也称联合测试,将程序模块采用适当的集成策略组装起来,对系统的接口(白盒测试)以及集成后的功能(黑盒测试进行正确性检测的一种测试。集成主要目的是检查软件单位之间的接口是否正确。

    • 测试阶段:一般单元测试之后进行
    • 测试对象:模块间的接口
    • 测试人员:白盒测试工程师或开发工程师
    • 测试依据:单元测试的模块+概要设计文档
    • 测试方法:黑盒测试与白盒测试相结合
    • 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响

    三.系统测试

    将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段,包括回归测试和冒烟测试。

    • 测试阶段:集成测试通过之后
    • 测试对象:整个系统(软、硬件)
    • 测试人员:黑盒测试工程师(对功能测试)
    • 测试依据:需求规格说明文档
    • 测试方法:黑盒测试
    • 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
      回归测试(Regression Testing)

    四.回归测试

    回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

    有了代码修改后就进行回归测试,根据测试阶段确定回归范围。

    在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。随着系统的庞大,回归测试的成本越来越大,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。

    五.冒烟测试

    这一术语源自硬件行业。
    对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。也可以理解为该种测试耗时短,仅用一袋烟功夫足够了。

    冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。

    概念:对核心主干流程进行测试,如果成功,就认为成功
    作用:判断是否接受测试的标准,若核心主干都走不通,那么直接打下去

    六.验收测试

    买到新手机,一般会有7天包退,一个月包换,我们会尽量在7天内把手机的所有功能都试一遍。

    验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。

    • 测试阶段:系统测试通过之后
    • 测试对象:整个系统(包括软硬件)。
    • 测试人员:主要是最终用户或者需求方。
    • 测试依据:用户需求、验收标准
    • 测试方法:黑盒测试(对功能进行测试)
    • 测试内容:同系统测试(功能…各类文档等)

    七.静态测试(不运行程序本身,测试文档)

    静态测试是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。‘对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。

    八.动态测试

    动态测试方法是指通过运行被测程序检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。大多数软件测试工作都属于动态测试。

    九.手工测试

    就是由人去一个一个的输入测试用例,然后观察结果,和机器测试相对应,属于比较原始但是不可缺少的一个步骤。

    总结优缺点:
    (1)优点:自动化无法替代探索性测试、发散思维结果的测试
    (2)缺点:执行效率慢,量大易错。

    十.自动化测试

    就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件

    简单说自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。

    自动化实施步骤:
    1.完成功能测试,版本基本稳定
    2.根据项目特性,选择适合项目的自动化工具,并搭建环境
    3.提取手工测试的测试用例转化为自动化测试的用例
    4.通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期
    5.生成自动测试报告
    6.持续改进,脚本优化。

    十一.业务测试

    业务测试是测试人员把系统各个模块串接起来运行、模拟真实用户实际的工作流程,满足用户需求定义的功能来进行测试的过程。

    例如查看邮件:
    登录网站-输入用户名、密码登录-进入收件箱-查到邮件-点击打开-查阅-关闭邮件-退出邮箱-关闭网站
    业务测试关注需求和用户
    所有业务流程进行测试,包过主干流程,分支流程,甚至更小的流程
    测不同的业务,必须对项目的需求特别了解

    十二.界面测试

    界面测试(简称UI测试),测试用户界面的功能模块的布局是否合理、整体风格是否一致、各个控件的放置位置是否符合客户使用习惯,此外还要测试界面操作便捷性、导航简单易懂性,页面元素的可用性,界面中文字是否正确,命名是否统一,页面是否美观,文字、图片组合是否完美等。

    十三.文档测试

    在这里插入图片描述

    十四.兼容性测试

    大家经常上网,同一网站在不同的浏览器上表现不一样

    WEB测试 ;APP测试

    兼容性主要是指软件之间能否很好的运做,会不会有影响、软件和硬件之间能否发挥很好的效率工作,会不会影响导致系统的崩溃。

    平台测试
    浏览器测试
    软件本身能否向前或者向后兼容
    测试软件能否与其它相关的软件兼容
    数据兼容性测试
    
    

    最常见的就是浏览器的兼容性测试,不同浏览器在css,js解析上的不同会导致页面的显示不同。

    十五.易用性测试

    易用性(Useability)是交互的适应性、功能性和有效性的集中体现。

    手机拔打电话功能不放在首页,放在一个目录下边,点击三四次才可以找到拔打电话功能,这个功能好用吗?

    十六.性能测试

    检查系统是否满足需求规格说明书中规定的性能。
    通常表现在以下几个方面:
    对资源利用(如内存、处理机周期等)进行的精确度量
    对执行间隔
    日志事件(如中断,报错)
    响应时间
    吞吐量(TPS)
    辅助存储区(例如缓冲区、工作区的大小等)
    处理精度等进行的监测
    
    展开全文
  • 异常捕获,其本质就是程序员希望有一个if...else代码块,可以将影响程序运行的情况包括进去: ... java中异常捕获和处理可以用try..catch代码块来实现,把可能发生异常的代码放在try中,一单代码发生异常,系统就会...
  • 常见的注释种类和用法

    千次阅读 2019-06-19 10:17:25
    同上,但是能写入javadoc文档说明,用来生成HTML格式的代码报告,所以注释文档必须写在类、域、构造函数、方法,以及字段(field)定义之前。注释文档由两部分组成——描述、块标记。 jsp注释: <!-- 注释内容 --...
  • Java 常见异常种类

    2021-02-10 17:41:29
    Java 常见异常种类 1、什么是异常 结构不佳的代码不能运行,这是Java的基本理念。 发现错误的理想时机是在编译期。然而,编译器并不能发现所有的错误,余下的问题就需要在程序运行时解决。这就需要错误能通过某种...
  • EJA差压变送器三种故障分析...闲话少说今天为大家介绍的是EJA差压变送器的种类以及EJA差压变送器三种常见的故障分析!EJA差压变送器原理: (http://www.ads168.com.cn/)由单晶硅谐振式传感器上的两上H形的振动梁分别...
  • 语言缩写 语言种类 语言代码 chs 简体中文 0804 cht 繁体中文 0404 jpn 日文 0011 kor 韩...
  • 1、在Initiator中找到加载完后的代码 2、打开一个新的网页在Console输入这些字符执行 (1)、报错, (2)、未报错 1)、删除最后的一个表情 2)、删除最后一个表情并在末尾加上.toString(),将代码作为字符串输出 ...
  • 病毒又分为很多种类,下面,我就来说说最常见的一些病毒吧! 系统病毒 系统病毒的前缀为:Win32、PE、Win95、W32、W95等。这些病毒的一般共有的特性是可以感染windows操作系统的 *.exe 和 *.dll
  • 1、什么是异常结构不佳的代码不能运行,这是Java的基本理念。发现错误的理想时机是在编译期。然而,编译器并不能发现所有的错误,余下的问题就需要在程序运行时解决。这就需要错误能通过某种方式,把适当的信息 传递...
  • 1、什么是异常结构不佳的代码不能运行,这是Java的基本理念。发现错误的理想时机是在编译期。然而,编译器并不能发现所有的错误,余下的问题就需要在程序运行时解决。这就需要错误能通过某种方式,把适当的信息 传递...
  • 笔者初学iOS的时候,对于新闻客户端中常见的滑动翻页查看资讯的功能就挺感兴趣的,就想着去实现它,在实现的过程中也是遇到了一系列的问题,之后再网上也查了许多资料,也有类似于这样功能的三方库,三方库能实现界面的...
  • 1、什么是异常结构不佳的代码不能运行,这是Java的基本理念。发现错误的理想时机是在编译期。然而,编译器并不能发现所有的错误,余下的问题就需要在程序运行时解决。这就需要错误能通过某种方式,把适当的信息 传递...
  • 常见的塑料你都了解么?我们每日都在更新塑料价格,但是常见的塑料你都了解么?你知道PA、PP、PBT、PC,那你知道什么是PAN、PEI、PSU、MF么?下面小编为大家整理了一份关于84种常见塑料代码中英文对照表,值得收藏哦...
  • 开始今天Python常见面试题:问:说说Python解释器种类以及特点?答:Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同特点,但都能正常...
  • Web应用程序的安全性问题依其存在的形势划分,种类繁多,这里不准备介绍所有的,只介绍常见的一些。 常见Web应用安全问题安全性问题的列表:  1、跨站脚本攻击(CSS or XSS, Cross Site Scripting) 2、...
  • ------------------------------第一种理解----------------------1、什么是异常结构不佳的代码不能运行,这是Java的基本理念。发现错误的理想时机是在编译期。然而,编译器并不能发现所有的错误,余下的问题就需要...
  • 1、输入注入注入攻击影响广泛且很常见,注入有很多种类,它们影响所有语言、框架和环境。SQL 注入是直接编写 SQL 查询(而非使用 ORM) 时将字符串与变量混合。我读过很多代码,其中“引号字符转义”被认为是一种...
  • 开始今天Python常见面试题: 问:说说Python解释器种类以及特点? 答:Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同特点,但都能...
  • 答:Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同特点,但都能正常运行Python代码。 Python解释器主要有以下几个: 1、CPython 官方...
  • 待解析JSON格式文件如下:[{"id":"5", "version":"1.0", "name":"xiaowang"},{"id":"10", "version":"2.0", "name":"lisi"}]一、使用...直接上代码,如下:1 //方法一:使用JSONObject2 private voidparse...
  • 常见的兼容性问题

    2020-06-29 17:21:18
    常见的兼容性问题 浏览器有着大量不同的版本,不同种类的浏览器的内核也不尽相同,所以不同浏览器对代码的解析会存在差异,这就导致对页面渲染效果不统一的问题。 初始化样式 因浏览器兼容的问题,不同的浏览器对...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 635
精华内容 254
关键字:

常见的代码种类