代码安全规范1.1

命令注入是指应用程序执行命令的字符串或字符串的一部分来源于不可信赖的数据源,程序没有对这
些不可信赖的数据进行验证、过滤,导致程序执行恶意命令的一种攻击方式。
1 :以下代码通过 Runtime.exec() 方法调用 Windows dir 命令,列出目录列表。
import java.io.*;
public class DirList {
public static void main(String[] str) throws Exception {
String dir = System.getProperty("dir");
Process proc = Runtime.getRuntime().exec("cmd.exe /c dir" + dir);
int result = proc.waitFor();
if (result != 0) {
System.out.println("process error: " + result);
}
InputStream in = (result == 0) ? proc.getInputStream() : proc.getErrorStream();
int c;
while ((c = in.read()) != -1) {
System.out.print((char) c);
}
}
}
攻击者可以通过以下命令利用该程序。
java -Ddir='dummy & echo bad' DirList
该命令实际上执行的是以下两条命令。
cmd.exe /c dir dummy & echo bad
2 :以下代码来自一个 Web 应用程序,该段代码通过运行 rmanDB.bat 脚本启动 Oracle 数据库备份,
然后运行 cleanup.bat 脚本删除一些临时文件。脚本文件 rmanDB.bat 接受一个命令行参数,其中指明需要
执行的备份类型。
...
String btype = request.getParameter("backuptype");
String cmd = new String("cmd.exe /K \"c:\\util\\rmanDB.bat "+btype+"&& c:\\utl\\cleanup.bat\"");
System.Runtime.getRuntime().exec(cmd);
...
该段代码没有对来自用户请求中的 backuptype 参数做任何校验。
通常情况下, Runtime.exec() 函数不会执行多条命令,但在以上代码中,为了执行多条命令,程序调用
Runtime.exec() 方法,首先运行了 cmd.exe 指令,因此能够执行用两个与号分隔的多条命令了。如果攻击者
传递了一个形式为 "&& del c:\\dbms\\*.*" 的字符串,那么该段代码将会在执行其他指定命令的同时执行这
条命令。

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

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

相关文章

Jenkins实现自动化部署Springboot项目到Docker容器(Jenkinsfile)

Jenkins实现自动化部署Springboot项目到Docker容器 引言:为什么需要自动化部署? 在软件开发中,频繁的手动部署既耗时又容易出错。通过 Docker + Jenkins + Git 的组合,您可以实现: ✅ 一键部署:代码推送后自动构建和部署🐳 环境一致性:Docker 确保开发、测试、生产环…

第二届智慧教育与计算机技术国际学术会议(IECT 2025)

在数字化浪潮中,智慧教育与计算机技术的深度融合正重构教育生态。智能教学系统打破传统课堂的单向灌输模式,通过机器学习分析学习数据,为学生生成个性化学习路径,推动被动接受向主动探索转型。这对教育体系提出核心诉求&#xff1…

驱控边界在哪里?知名舵机品牌伟创动力CNTE2025展带来答案

2025年6月12日,北京国防科技装备展将再度启幕。作为微型驱控领域的代表性厂商,伟创动力(Kpower)将带来覆盖舵机、减速齿轮箱、无刷电机及一体化驱控模组在内的全系解决方案,舵机产品回应一个至关重要的技术命题——“国…

Day46 Python打卡训练营

知识点回顾: 1. 不同CNN层的特征图:不同通道的特征图 2. 什么是注意力:注意力家族,类似于动物园,都是不同的模块,好不好试了才知道。 3. 通道注意力:模型的定义和插入的位置 4. 通道注意力后…

专业级PDF转CAD解决方案

PDF 文件因其出色的便携性和稳定性,已成为许多用户的首选格式。但在涉及图像编辑或精细调整时,CAD 文件显然更具优势。 这款 CAD 图纸转换工具,界面清爽、操作直观,是处理图纸文件的理想助手。 它不仅支持不同版本 CAD 文件之间…

PDF文件如何转换格式?简单教程来了

PDF 格式以其高兼容性和稳定性被广泛使用,但有时为了便于编辑或满足特定软件的要求,我们需要将其转换为其他格式,如 Word、Excel、图片等。那如何将PDF转换成其他格式文件呢?其实方法很简单,不清楚的小伙伴一起来看看吧…

三十四、面向对象底层逻辑-SpringMVC九大组件之FlashMapManager接口设计哲学

在构建符合 RESTful 原则或追求用户体验流畅性的 Web 应用时,“重定向后刷新”(PRG - Post/Redirect/Get)模式是避免表单重复提交、实现页面无刷新跳转的黄金法则。然而,重定向(REDIRECT:)的本质是客户端发…

android手势创建及识别保姆级教程

手势交互,简单来说,就是通过手指在屏幕上的滑动、点击、缩放等动作与设备沟通的方式,早已成为现代移动设备用户体验的核心支柱。想想看,无论是日常刷短视频时的上下滑动,还是地图导航时的双指缩放,甚至是游…

Python | Windows11通过离线方式安装pyserial

导言 因公司网络访问的限制,没办法使用pip install pyserial轻松地安装pyserial库。 打开网页:https://pypi.org/project/pyserial/#files 下载.whl cmd命令行 如下是命令行指令: pip install .\pyserial-3.5-py2.py3-none-any.whlpython …

【nano与Vim】常用命令

使用nano编辑器 保存文件 : 按下CtrlO组合键,然后按Enter键确认文件名。 退出编辑器 : 按下CtrlX组合键。 使用vi或vim编辑器 保存文件 : 按Esc键退出插入模式,然后输入:w并按Enter键保存文件。 退出编辑器 &#xf…

(Python网络爬虫);抓取B站404页面小漫画

目录 一. 分析网页 二. 准备工作 三. 实现爬虫 1. 抓取工作 2. 分析工作 3. 拼接主函数&运行结果 四. 完整代码清单 1.多线程版本spider.py: 2.异步版本async_spider.py: 经常逛B站的同志们可能知道,B站的404页面做得别具匠心&…

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…

ROS1: 使用rosbag的方式将点云topic保存为pcd文件

ROS1: 使用rosbag的方式将点云topic保存为pcd文件。 分为两步:步骤1:通过rosbag录制点云 ,步骤2:通过ros1将rosbag保存为点云pcd文件。 ------------------------ 步骤一:指令示例如下: # topic 名称&a…

MySQL 高级学习篇

一、连结(Join) 1.1 概念 联结(Join)操作用于将多个表中的列组合在一起,形成一个新的查询结果集。它允许我们从多个表中提取数据,并基于表之间的关系进行查询。 1.2 类型 1. 内联结(INNER J…

clickhouse 学习总结

在 ClickHouse 中,配置文件通常位于 /etc/clickhouse 目录下。这个目录包含了多个配置文件,用于控制 ClickHouse 的各种服务(如服务器、用户、远程服务等)的配置。 数据存储目录/var/lib/clickhouse 配置 文件目录 /etc/clickho…

理解JavaScript中map和parseInt的陷阱:一个常见的面试题解析

前言 在JavaScript面试中,map和parseInt的组合常常被用作考察候选人对这两个方法理解深度的题目。让我们通过一个简单的例子来深入探讨其中的原理。 问题现象 [1, 2, 3].map(parseInt) // 输出结果是什么?很多人可能会预期输出[1, 2, 3],但…

字符串 金额转换

package heima.Test09;import java.util.Scanner;public class Money {public static void main(String[] args) {//1。键盘录入一个金额Scanner sc new Scanner(System.in);//请输入一个数据String result "";int money;while (true) {System.out.println("请…

静态相机中的 CCD和CMOS的区别

文章目录 CCD处理方式CMOS处理方式两者区别 首先根据 成像原理,CCD和CMOS的作用是一致的,都是为了将光子转化为数字图像,只是 转换的方式出现差异。 CCD处理方式 获取光子: 在电荷耦合器件(CCD)传感器中…

Pycharm的终端无法使用Anaconda命令行问题详细解决教程

很多初学者在Windows系统上安装了Anaconda后,在PyCharm终端中运行Conda命令时,会遇到以下错误: conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 请检查名称的拼写,如果包括路径,请确保…

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…