超详细的常见漏洞代码审计方法,网络安全必看的零基础入门到精通教程!

文章目录

    • 前言
      • 代码审计的思路
      • 常见漏洞的代码审计
        • 1. HTTP响应头截断
        • 修复方案:
        • 2. 硬编码问题
        • 3. SQL注入
        • 4. maven不安全模块
        • 5. 服务端请求伪造(SSRF)
        • 6. 路径遍历
        • 7. 命令注入
  • 常见代码审计工具,代码审计为什么不能只用工具?
    • 代码审计工具
    • 代码审计工具优缺点
      • 优点
      • 缺点

前言

这篇文章主要是总结一下在安全工作中常见漏洞的代码审计方法,以及修复方案,希望能对初学代码审计小伙伴们有所帮助。

这是我给粉丝盆友们整理的代码审计的基础教程

喜欢的朋友们,记得给我点赞支持和收藏一下,关注我,学习黑客技术。

代码审计的思路

1. 懂得漏洞类型产生原理

2. 懂得危险函数的参数不当使用可造成的漏洞威胁。例如:

涉及到命令执行代码执行的eval,assert,array\_map,usort等 本身函数的脆弱性,is\_numeric,md5等。

3. 晓得php函数的脆弱性。例如:

==与===

===并不是强大无比不可绕过的,也要结合代码设计逻辑。

4. php的技巧。

5. php版本及配置不当结合函数不当利用造成的漏洞威胁。

常见漏洞的代码审计

1. HTTP响应头截断

漏洞描述

HTTP响应截断是由于应用程序未对用户提交的数据进行严格过滤,当用户恶意提交包含 CR(回车,即URL编码%0d或\r)和 LF(换行符,即URL编码%0a或\n)的HTTP请求,服务器可能会创建两个 HTTP 响应,攻击者可以控制第二个响应并加载攻击。攻击者可控制响应的内容构造XSS攻击,其中响应中包含恶意的JavaScript或其它代码在用户的浏览器中执行,也有可能让用户重定向到攻击者控制的Web内容或在用户的主机上执行恶意操作。

审计方法

检查对响应头字段是否进行安全处理。

如果未对响应头进行任何安全处理,则为确认:

//未对响应头做任何安全处理,审计时为确认 String data; if (data != null){ response.addHeader("Location", "/author.jsp?lang=" + data); }

再举一例:

//同样的未对响应头做任何安全处理,审计时为确认 String author = request.getParameter(AUTHOR_PARAMETER); // ... Cookie cookie = new Cookie("author", author); response.addCookie(cookie);

如果对响应头做了响应的安全处理,则为误报:

//使用Refenence类对环境变量值进行编码,剔除特殊字符,为误报 if (data != null){ String decode = Reference.decode(data); response.addHeader("Location", "/author.jsp?lang=" + decode); }
修复方案:

1、对用户的输入进行合理验证,对特殊字符(如<、>、’、”等)等进行编码。

2、创建一份安全字符白名单,只接受完全由这些受认可的字符组成的输入出现在 HTTP 响应头文件中。3、使用源代码静态分析工具,进行自动化的检测,可以有效的发现源代码中的 HTTP 响应截断问题。

2. 硬编码问题

漏洞描述

硬编码问题,是指将敏感数据(包括口令和加密密钥,部分账号的密码以及其他敏感信息等)硬编码在程序中。

审计步骤

1、看扫描出的硬编码是否为常规单词(或通读代码查看是否有硬编码敏感文件)

2、如果是常规单词,则为误报,如:

//fipAddress为硬编码 public class IPaddress { private String ipAddress = "172.16.254.1"; public static void main(String[] args) { //... } }

可以使用 javap -c IPaddress 命令来反编译 class 来发现其中硬编码的服务器 IP 地址,此处反

编译器的输出信息可以直接透漏服务器的明文 IP 地址为172.16.254.1

再举一例:

//SECRET_PASSWORD为硬编码 private String SECRET_PASSWORD = "No fear in my heart!"; Properties props = new Properties(); props.put(Context.SECURITY_CREDENTIALS, "password");

3、如果是随机字符串,则为确认或待确认,如:

//1546272000000为硬编码 byte[] sr = hBaseClient.buildRowKey(devId, "1546272000000");

再举一例:

//qafgshw1900wxxxx为硬编码 private String accessKeyId = "qafgshw1900wxxxx";

4、追踪key值,如果key为硬编码则为确认,如:

//key值为硬编码 byte[] key = {1, 2, 3, 4, 5, 6, 7, 8}; SecretKeySpec spec = new SecretKeySpec(key, "AES"); Cipher aes = Cipher.getInstance("AES"); aes.init(Cipher.ENCRYPT_MODE, spec); return aesCipher.doFinal(secretData);

追踪key值,如果追踪不到或者为安全形式,则为误报,如

//无法再继续追踪key值,为误报 public static byte[] encryptByPrivateKey(byte[] data, String key) throws Exception { //key为密钥 byte[] keyBytes = decryptBASE64(key); PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes); KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM); Key privateKey = keyFactory.generatePrivate(pkcs8KeySpec); Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); cipher.init(Cipher.ENCRYPT_MODE, privateKey); return cipher.doFinal(data); }

再来一栗:

//存储密钥。KeyStore.getInstance("PKCS12")为密钥库,为误报 try{ KeyStore keyStore = KeyStore.getInstance("PKCS12"); keyStore.load(null, null); KeyGenerator keyGen = KeyGenerator.getInstance("AES"); keyGen.init(128); Key key = keyGen.generateKey(); keyStore.setKeyEntry("secret", key, "password".toCharArray(), null); keyStore.store(new FileOutputStream("output.p12"), "password".toCharArray()); } catch (Exception ex){ ex.printStackTrace(); }

修复方案

推荐使用配置文件或者通过配置中心来下发这些敏感配置,密码和密钥应存储在单独的加密配置文件或密钥库中。

3. SQL注入

漏洞描述

注入攻击的本质,是程序把用户输入的数据当做代码执行。这里有两个关键条件:

第一是用户能够控制输入;

第二是用户输入的数据被拼接到要执行的代码中从而被执行。

sql 注入漏洞则是程序将用户输入数据拼接到了 sql 语句中,从而攻击者即可构造、改变 sql 语义从而进行攻击。

漏洞举例

(1) 直接通过拼接 sql

@RequestMapping("/SqlInjection/{id}") public ModelAndView SqlInjectTest(@PathVariable String id){ String mysqldriver = "com.mysql.jdbc.Driver"; String mysqlurl = "jdbc:mysql://127.0.0.1:3306/test?user=root&password=123456&useUnicode=true&c haracterEncoding=utf8&autoReconnect=true";#直接通过拼接 sql String sql = "select * from user where id=" + id; ModelAndView mav = new ModelAndView("test2"); try{ Class.forName(mysqldriver); Connection conn = DriverManager.getConnection(mysqlurl); PreparedStatement pstt = conn.prepareStatement(sql); ResultSet rs = pstt.executeQuery();

再来一例:

//没有做任何其他安全处理措施 stmt = conn.createStatement(); rs = stmt.executeQuery("select * from user where username = '" + username+"' and password='"+password+"'");

(2) 预编译使用有误

漏洞举例:

//只使用了占位符 @RequestMapping("/SqlInjection/{id}") public ModelAndView SqlInjectTest(@PathVariable String id){ String mysqldriver = "com.mysql.jdbc.Driver"; String mysqlurl = "jdbc:mysql://127.0.0.1:3306/test?user=root&password=123456&useUnicode=true&c haracterEncoding=utf8&autoReconnect=true"; String sql = "select * from user where id= ?"; ModelAndView mav = new ModelAndView("test2"); try{ Class.forName(mysqldriver); Connection conn = DriverManager.getConnection(mysqlurl); PreparedStatement pstt = conn.prepareStatement(sql); //pstt.setObject(1, id); //一般使用有误的是没有用这一句,编码者以为在上面的sql语句中直 接使用占位符就可以了。 ResultSet rs = pstt.executeQuery();

审计步骤:查看预编译的完整性,关键函数定位 setObject()、setInt()、setString()、setSQLXML()关联上下文搜索 set* 开头的函数。

(3) %和_(oracle 中模糊查询)问题

@RequestMapping("/SqlInjection/{id}") public ModelAndView SqlInjectTest(@PathVariable String id){ String mysqldriver = "com.mysql.jdbc.Driver"; String mysqlurl = "jdbc:mysql://127.0.0.1:3306/test?user=root&password=123456&useUnicode=true&c haracterEncoding=utf8&autoReconnect=true"; String sql = "select * from user where id= ?"; ModelAndView mav = new ModelAndView("test2"); try{ Class.forName(mysqldriver); Connection conn = DriverManager.getConnection(mysqlurl); PreparedStatement pstt = conn.prepareStatement(sql); pstt.setObject(1, id); //使用预编译 ResultSet rs = pstt.executeQuery();

审计步骤:定位相关 sql 语句上下文,查看是否有显式过滤机制。

修复方案:上面的代码片段即使这样依然存在 sql 注入,原因是没有手动过滤%。预编译是不能处理这个符号的,以需要手动过滤,否则会造成慢查询,造成 dos。

(4) order by 问题

String sql = “Select * from news where title =?”+ “order by ‘” + time + “’asc”

审计步骤:定位相关 sql 语句上下文,查看是否有显式过滤机制。

修复方案:类似上面的这种 sql 语句 order by 后面是不能用预编译处理的只能通过拼接处理,所以需要手动过滤。

(5) 有关$符号的情况

#{}:相当于jdbc中的preparedstatement,传入的字符串,需要赋值后使用,可以有效防止sql注入

KaTeX parse error: Expected ‘EOF’, got ‘#’ at position 44: …法防止sql注入 简单的说就是#̲{}传过来的参数带单引号’',…{}传过来的参数不带单引号。

但是orderby是动态SQL,只能用KaTeX parse error: Expected ‘EOF’, got ‘#’ at position 5: {},用#̲{}会多个’ '导致sql语句…{}。

//需要转义的字符串仍使用$ delete from ${tableName}

修复方案:对于可以使用#{}的情况,直接使用#{}即可解决问题对于不能使用#{}的情况(如orderby),需要增加额外的过滤逻辑,以此判断输入内容是否正常,如字段类型、字段长度等

4. maven不安全模块

漏洞描述

Maven,是一个Java开发比较常用的项目管理工具,可以对Java项目进行构建、依赖管理。当它配置一个不安全的模块时,即存在安全风险。

审计方法

查看配置的版本是否属于安全版本区间。如果是,则确认:

//3.9版本是存在漏洞的版本。安全版本是3.11以上 <dependency> <groupId>com.hazelcast</groupId> <artifactId>hazelcast-client</artifactId> <version>3.9</version> </dependency>

修复方案

配置为安全版本即可(同时应注意解决兼容性问题)

5. 服务端请求伪造(SSRF)

漏洞描述

SSRF是攻击者让服务端发起指定的请求,攻击的目标一般是从外网无法访问的内网系统。SSRF形成的原因大都是由于代码中提供了从其他服务器应用获取数据的功能但没有对目标地址做过滤与限制。比如从指定URL链接获取图片、下载等。一般利用http协议来探测端口,利用file协议读取任意文件。

利用场景

SSRF漏洞一般位于远程图片加载与下载、图片或文章收藏功能、URL分享、通过URL在线翻译、转码等功能点处。

关键词/接口/类包

// Java HttpURLConnection.getInputStream URLConnection.getInputStream Request.Get.execute Request.Post.execute URL.openStream ImageIO.read OkHttpClient.newCall.execute HttpClients.execute HttpClient.execute

审计方法

1、内网系统的SSRF直接为误报(内网系统之间互调互传)

2、检查请求的URL是否为外部可控,即由外部传入

3、检查请求的返回,是否对请求的返回数据做了安全处理

漏洞示例

//请求URL为外部可控,返回数据直接展示 String url = request.getParameter("picurl"); StringBuffer response = new StringBuffer(); URL pic = new URL(url); HttpURLConnection con = (HttpURLConnection) pic.openConnection(); con.setRequestMethod("GET"); con.setRequestProperty("User-Agent", "Mozilla/5.0"); //发起请求,触发漏洞 BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); modelMap.put("resp",response.toString()); return "getimg.htm";

再举一例:

//HttpClients函数的SSRF漏洞代码,审计时为确认: String url = request.getParameter("url"); CloseableHttpClient client = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = client.execute(httpGet); //发起请求

修复方案

  1. 使用白名单校验HTTP请求url地址

  2. 避免请求url外部可控

  3. 避免将请求响应及错误信息返回给用户

  4. 禁用不需要的协议及限制请求端口,仅仅允许http和https请求等

6. 路径遍历

目录/路径遍历、任意文件上传/下载

漏洞描述

在下载文件相关的代码中,若不对HTTP请求中的待下载文件名进行检查,则有可能产生任意文件下载漏洞。攻击者可以指定文件名、文件路径等文件操作的参数,越权访问正常情况下无法到达的系统资源。

审计方法

  1. 判断是否存在上传下载行为

  2. 判断路径是否可被外部控制,如果外部可控则向下

  3. 判断是否对文件路径做了安全措施,如果做了安全措施为误报

漏洞示例

没有对路径做任何安全处理,如:

//没有对路径做任何安全处理措施 path = "config/"+path; File file = new File(path); System.out.println(path); response.setHeader("Content-Disposition", "attachment;filename=\\"" + new String(path.getBytes(), "ISO8859-1") + "\\""); response.setContentLength((int) file.length()); byte[] buffer = new byte[4096];// 缓冲区 BufferedOutputStream output = null; BufferedInputStream input = null;

再举一例:

//对下载的文件未做安全处理 public Response getImage(@javax.ws.rs.PathParam("image") String image) { File file = new File("resources/images/", image); if (!file.exists()) { return Response.status(Status.NOT_FOUND).build(); } return Response.ok().entity(new FileInputStream(file)).build(); }

修复方案

  1. 使用getCanonicalPath()、getAbsolutePath()等方法获取规范路径

  2. 对文件操作参数进行输入验证,过滤特殊字符

  3. 通过文件头判断来限制文件类型,而不是通过文件后缀来判断

  4. 服务器安全配置策略文件。将所能读取的文件限定在特定的目录下

7. 命令注入

漏洞描述

命令注入是指通过提交恶意构造的参数破坏命令语句结构,当对用户输入的命令没有进行限制或者过滤不严导致用户可以执行任意命令时,就会造成命令执行漏洞。通常表现为攻击者能够篡改程序执行的命令或命令执行的环境,从而直接或间接的控制了所执行的命令。

常见的命令执行方法

// Java Runtime.exec ProcessBuilder.start GroovyShell.evaluate

审计方法

  1. 检查是否是系统命令,如果不是系统命令而是常规字符串拼接,则为误报

  2. 检查所执行的命令是否为外部可控制,如果外部不可控(例如命令拼接参数不为外部控制)则为误报

  3. 外部可控制的情况下检查命令的拼接参数是否做了安全措施,如果未做安全措施即为确认

漏洞示例

(1) 没有对外部传入的命令拼接参数做任何安全处理措施,如:

//没有对外部传入的命令参数command做任何安全处理 System.out.println("Command: ping"+ command); Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("cmd.exe /C ping "+command); int res = proc.waitFor(); if(res !=0){ System.out.println("process error: "+ res); } InputStream in = (res == 0)? proc.getInputStream() : proc.getErrorStream(); BufferedReader reader=new BufferedReader(new InputStreamReader(in)); buffer=new StringBuffer(); String line; while((line = reader.readLine())!=null){ buffer.append(line+"\\n"); }

再举一例:

//同样没有对外部传入的命令拼接参数input做任何安全处理 Runtime r = Runtime.getRuntime(); r.exec("/bin/sh -c some_tool" + input);

(2) 对外部传入的命令拼接参数做安全限制,如:

//对外部传入的命令拼接参数做了限制 //正则限定为合法IP地址 if (!Pattern.matches("([1-9]|[1-9]\\\\d|1\\\\d{2}|2[0-4]\\\\d|25[0-5])(\\\\.(\\\\d|[1-9]\\\\d|1\\\\d{2}|2[0-4]\\\\d|25[0-5])){3}", command)){ //如果不是IP则匹配不成功,则为F,!F则为T,T则执行此代码块 result.put("message", "Error!"); return DataUtil.toJson(result); } System.out.println("Command: ping"+ command); Runtime rt = Runtime.getRuntime(); Process proc = rt.exec("cmd.exe /C ping "+command); int res = proc.waitFor(); if(res !=0){ System.out.println("process error: "+ res); } InputStream in = (res == 0)? proc.getInputStream() : proc.getErrorStream(); BufferedReader reader=new BufferedReader(new InputStreamReader(in)); buffer=new StringBuffer(); String line; while((line = reader.readLine())!=null){ buffer.append(line+"\\n"); }

修复方案

  1. 构建白名单,只允许其中的字符出现在输入中

  2. 应有应用程序来控制命令,并使用绝对路径来执行命令

  3. 严格的权限限制,程序执行外部命令使用最小权限原则

  4. 严格的参数校验

常见代码审计工具,代码审计为什么不能只用工具?

代码审计是一种发现程序漏洞,安全分析为目标的程序源码分析方式。今天主要分享的是几款常用的代码审计工具,以及代码审计工具有哪些优缺点?

代码审计工具

seay代码审计工具,是一款开源的利用C#开发的一款代码审计工具。主要有SQL注入、xss跨站、命令执行、文件包含、文件上传、正则匹配、数据库执行监控等程序漏洞的监测。

frotify sca是惠普开发的一款商业性质的代码审计工具,主要包含了数据流、控制流、语义、配置、结构五大分析引擎。

rips是一款php开发,监测php程序漏洞的代码分析工具。该工具现目前的版本是0.5,并很早之前就已经停止更新。该工具能够发现SQL注入、xss跨站,文件包含,文件上传、代码执行、文件读取等漏洞。

findbugs是一款静态分析工具,属于eclipse的插件工具。

burp suite属于一款工具集成平台,主要包含了proxy(拦截http/s的代理服务器)、Spider(只能感应的网络爬虫)、Scanner(web应用漏洞)、Intruder(高度可配置工具)、Repeater(应用响应工具)、Sequencer(预测一些不可预知的漏洞,补发单独的http请求)、Decoder(程序的解码)、Comparer(反映请求和响应的差异)。该工具需要安装java环境。

Gerrit是一个基于 Web 的代码审查系统,适于采用 Git 版本控制系统开发的项目进行在线代码审查。

Phabricator是一个完整的开源软件应用程序,以Web基础,代码审查、计划、测试、浏览与审计评分、发现Bug等功能。

Review Assistant是Visual Studio的代码审查插件。可以创建审阅请求并在不离开Visual Studio的情况下对其进行响应。支持TFS,Subversion,Git,Mercurial和Perforce。

cobra:支持PHP、Jav等主要开发语言及其它数十种文件类型,支持检测多种漏洞类型,支持命令行模式和API模式。

VCG:它是一个基于字典的自动化源代码扫描工具,支持 C++, C#, VB, PHP, Java, PL/SQL and COBOL等多种语言,可以由用户自定义需要扫描的数据,可以对源代码中所有可能存在风险的函数和文本做一个快速定位和检索。

RIPS:PHP代码审计工具,支持跨平台部署,小巧强大。

SonarQube:SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量。通过插件形式,可以支持众多计算机语言,比如 java, C#, go,C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等。sonar可以通过PMD,CheckStyle,Findbugs等代码规则检测工具来检测代码,帮助发现代码漏洞。

代码审计工具优缺点

优点

1.降低人工成本

对于应用程序,扫描模式是通用的,计算机比人类更擅长这类扫描。在这种情况下,扫描器在扫描大型代码库漏洞时扮演着重要角色

2.发现漏洞的所有实例

扫描器可以非常有效地识别特定漏洞的所有实例及具体位置。跟踪大型代码库中所有文件的缺陷很难,扫描器对于这种情况很有帮助

3.源库分析

一些分析器通过源库分析的方式跟踪代码并识别漏洞。分析器识别可能的应用输入,并在所有源代码中彻底追踪输入,直到发现所有不符合安全代码模式的应用输入。源库分析能够帮助开发人员更好地理解代码缺陷和获得代码缺陷的根本原因

4.详细的报告格式

扫描器能够提供详细的分析报告,包括具体代码段的漏洞、漏洞的风险等级和详细描述。

缺点

1.未涉及业务逻辑缺陷

扫描器不能识别应用程序的业务逻辑、事务处理和敏感数据。通常,扫描器不能发现应用程序中需要实现的特定于某些功能和设计的安全控制。这些被认为是静态代码分析器的最大限制

2.范围有限

通常,静态代码分析器被设计用于特定的框架或语言,并且能够在一定范围内搜索特定漏洞模式的集合。在此范围之外,静态代码分析器并不能解决在搜索模式库中未涵盖的问题

3.不能发现设计缺陷

代码框架的设计缺陷没有固定模式,静态代码扫描器专注于代码层面。需要人工查看代码才能识别设计问题

4.误报

被扫描器标记的问题并非完全真实,需要有经验、了解安全编码的技术人员理解问题缺陷并对其进行分类。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1119003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20道软件测试经典面试题(含答案+文档)

1、什么是软件测试&#xff1f; 答案&#xff1a;软件测试是指在预定的环境中运行程序&#xff0c;为了发现软件存在的错误、缺陷以及其他不符合要求的行为的过程。 2、软件测试的目的是什么&#xff1f; 答案&#xff1a;软件测试的主要目的是保证软件的质量&#xff0c;并…

Z-Image-Turbo在建筑效果图生成中的初步尝试

Z-Image-Turbo在建筑效果图生成中的初步尝试 在建筑设计行业&#xff0c;一张高质量的效果图往往意味着数小时甚至数天的建模、材质调整与渲染等待。客户一句“能不能换个风格看看&#xff1f;”就可能让设计师重新来过。这种高成本、低反馈效率的传统流程&#xff0c;在AI技术…

2026玻璃外观缺陷检测设备技术应用与发展 - 品牌排行榜

随着工业生产对产品质量要求的不断提升,玻璃外观缺陷检测作为保障生产质量的关键环节,其技术应用日益受到关注。玻璃外观缺陷检测设备通过光学成像、图像处理等技术,能够精准识别玻璃表面的划痕、气泡、杂质等缺陷,…

Zotero PDF Translate终极指南:如何轻松翻译外文文献提升研究效率

Zotero PDF Translate终极指南&#xff1a;如何轻松翻译外文文献提升研究效率 【免费下载链接】zotero-pdf-translate 支持将PDF、EPub、网页内容、元数据、注释和笔记翻译为目标语言&#xff0c;并且兼容20多种翻译服务。 项目地址: https://gitcode.com/gh_mirrors/zo/zote…

【收藏级 | 知识分享】艺术学科学术发表避坑指南:专属规则与实操技巧

艺术学科学术发表避坑指南:专属规则与实操技巧 艺术学科与理工科、其他人文社科相比,学术发表有其独特规则,2025 年核心避坑要点曝光: 1. 论文形式特殊要求视觉艺术、设计类论文:需附高清作品图册(300dpi 以上,…

2026年Java面试1000+题附答案解析

前言 2026 跳槽不迷茫&#xff0c;大家可以先收藏再看&#xff0c;后续跳槽都能用上的&#xff01; Java程序员绝大部分工作的时间都是增删改查&#xff0c;很多人觉得这项工作没什么技术含量&#xff0c;任何一件事情都要站在不同的角度去考虑&#xff0c;对于大部分的java程…

博士帮导师看论文,这类论文会被卡住,太多了

最近这段时间&#xff0c;我一直在帮导师处理、整理学生论文。 数量不算少&#xff0c;看得也很细。说一句可能和你想象不太一样的话&#xff1a;被卡住的论文里&#xff0c; 真正“写得差”的&#xff0c;其实不多。反而是另一类论文&#xff0c;占了相当大的比例—— 写得不差…

普通人掌握黑客技术后有多爽?学习黑客技术的完整路线指南

今天给大家分享一下学习黑客技术的完整路线指南&#xff0c;全文干货分享&#xff0c;阅读需要10分钟&#xff0c;建议收藏&#xff01; 文章目录什么是网络安全工程师&#xff1f;为什么它的需求越来越大&#xff1f;网络安全工程师是什么&#xff1f;如何成为一名白帽黑客&am…

Z-Image-Edit与DragGAN对比:两种编辑范式的差异

Z-Image-Edit与DragGAN对比&#xff1a;两种编辑范式的差异 在图像AI技术飞速演进的今天&#xff0c;我们正经历一场从“操作工具”到“表达意图”的创作革命。过去&#xff0c;修改一张照片需要熟练掌握Photoshop中的图层、蒙版和变形工具&#xff1b;如今&#xff0c;只需说一…

Android Studio中文语言包:5分钟搞定完整本地化安装指南

Android Studio中文语言包&#xff1a;5分钟搞定完整本地化安装指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还在为Androi…

Z-Image-Edit与传统图像编辑软件集成设想

Z-Image-Edit 与传统图像编辑软件的融合之路 在设计行业&#xff0c;一个反复出现的场景是&#xff1a;设计师花费数小时抠图、调色、替换背景&#xff0c;只为完成一张电商主图。而另一边&#xff0c;生成式AI已经能用一句话生成整幅画面。两者的割裂显而易见——我们拥有强大…

艾体宝洞察 | Mend 洞察 |「影子 AI」已经进到你的供应链:Mend AI 如何把治理前移到每一次合并之前?

当生成式 AI 进入研发流程&#xff0c;你的风险不再只来自 CVE—— 还来自「看不见的模型、框架、代理与提示词」。Mend AI 的主题核心&#xff0c;是用自动化盘点、风险洞察、提示词加固、AI 红队与政策治理&#xff0c;把 AI 应用安全从事后救火改成事前控管与可稽核治理。一…

Android Studio中文界面配置完全攻略

Android Studio中文界面配置完全攻略 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 在Android应用开发过程中&#xff0c;英文界…

Z-Image-Edit编辑指令泛化能力测试:未见过的描述能否执行?

Z-Image-Edit编辑指令泛化能力测试&#xff1a;未见过的描述能否执行&#xff1f; 在电商设计师面对海量商品图需要快速换装、影视概念艺术家反复调整角色造型的今天&#xff0c;一个现实问题日益凸显&#xff1a;我们是否真的能让AI“听懂”那些从未训练过的复杂修改指令&…

2026雅思培训机构排行榜发布,多次元教育以98.6分领跑行业 - 速递信息

经济高质量发展与人才全球化浪潮下,雅思培训行业正从规模扩张转向价值兑现的深刻变革2025年中国经济复苏态势强劲,全年GDP增长率达5.2%,服务业增加值占比攀升至54.8%,创历史新高。在这一经济背景下,跨境服务、高端…

通过语音指令,搜索手机通讯录联系人,自动拨号,方便视障用户打电话。

视障人士语音拨号助手一、实际应用场景与痛点应用场景视障用户张先生需要经常联系家人和朋友。传统的通讯录操作对视障人士极不友好&#xff1a;触摸屏无法提供有效反馈&#xff0c;输入号码容易出错&#xff0c;查找联系人需要别人帮助。一次紧急情况下&#xff0c;他急需拨打…

蓝屏模拟器:安全体验Windows崩溃的艺术

蓝屏模拟器&#xff1a;安全体验Windows崩溃的艺术 【免费下载链接】BluescreenSimulator Bluescreen Simulator for Windows 项目地址: https://gitcode.com/gh_mirrors/bl/BluescreenSimulator 在数字世界中&#xff0c;蓝屏死机&#xff08;BSOD&#xff09;是许多Wi…

Z-Image-Turbo在广告素材批量生成中的应用实例

Z-Image-Turbo在广告素材批量生成中的应用实例 如今&#xff0c;一场静默的生产力革命正在数字营销前线悄然发生。某电商运营团队面临“618”大促前的素材荒——上千款商品亟需配图&#xff0c;设计师却只能日更几十张。就在他们准备临时扩招时&#xff0c;技术团队上线了一套新…

Z-Image-ComfyUI浏览器兼容性测试:Chrome、Edge、Safari表现

Z-Image-ComfyUI浏览器兼容性实测&#xff1a;Chrome、Edge、Safari谁更胜一筹&#xff1f; 在AI图像生成工具日益普及的今天&#xff0c;越来越多设计师、内容创作者甚至开发者开始将Z-Image ComfyUI作为本地化文生图系统的首选方案。这套组合不仅具备强大的中文理解和指令遵…