openplc runtime v4 安全
安全概述OpenPLC 运行时 v4 实施了多层安全防护以抵御常见漏洞并确保在工业环境中的安全运行。TLS/HTTPS自签名证书运行时在首次启动时会自动生成自签名的 TLS 证书证书文件webserver/certOPENPLC.pem– 证书webserver/keyOPENPLC.pem– 私钥证书详情密钥长度2048 位 RSA有效期365 天主题CNlocalhost主题备用名称localhost、127.0.0.1 以及检测到的 IP 地址实现代码webserver/credentials.py证书生成证书生成过程包含多项安全校验主机名校验防止在主机名字段中进行命令注入IP 地址校验确保 IP 格式有效路径校验防止证书文件路径中的目录遍历攻击自动续期检查证书有效性过期后自动重新生成关键函数CertGen.generate_self_signed_cert(cert_file,key_file)CertGen.is_certificate_valid(cert_file)使用自定义证书如需使用自定义证书例如来自 Let’s Encrypt 的证书用您的证书替换webserver/certOPENPLC.pem用您的私钥替换webserver/keyOPENPLC.pem确保证书包含所有必要的主机名/IP重启运行时证书链若使用证书链请将证书串联在一起catyour_cert.pem intermediate.pem root.pemcertOPENPLC.pem身份认证JWT 令牌运行时使用 JSON Web 令牌JWT进行身份认证令牌存储密钥保存在/var/run/runtime/.env中256 位十六进制密钥64 字符首次启动时自动生成令牌用途WebSocket 调试接口需要 JWT 认证令牌通过 REST API 登录端点获取可通过重新生成密钥来吊销所有令牌环境变量JWT_SECRET_KEY64-character-hex-string密码安全用户密码经过多层保护哈希使用安全算法对密码进行哈希盐值每个用户拥有唯一的盐胡椒全局 256 位胡椒保存在.env文件中数据库存储于/var/run/runtime/restapi.db环境变量PEPPER64-character-hex-string配置管理.env文件在首次启动时自动生成采用安全默认值路径/var/run/runtime/.env内容SQLALCHEMY_DATABASE_URIsqlite:////var/run/runtime/restapi.db JWT_SECRET_KEY自动生成 PEPPER自动生成权限文件创建时带有受限权限仅运行时用户可访问不应提交至版本控制系统实现代码webserver/config.py文件上传安全ZIP 文件校验上传的 ZIP 文件在解压前会经过全面的安全检查路径遍历防护检查项无绝对路径以/开头无父目录引用..无盘符:字符解压路径经验证始终位于目标目录内示例拦截路径/etc/passwd ../../../etc/passwd C:\Windows\System32大小限制限制单个文件最大10 MB解压后总大小最大50 MB在解压前即强制执行目的防止资源耗尽和磁盘空间攻击ZIP 炸弹检测检查项压缩比必须 ≤ 1000:1示例压缩后1 KB解压后1 MB比率 1000:1– 允许解压后2 MB比率 2000:1– 拦截目的防止解压炸弹耗尽磁盘空间或内存扩展名白名单拦截的扩展名.exe– Windows 可执行文件.dll– 动态链接库.sh– Shell 脚本.bat– 批处理文件.js– JavaScript 文件.vbs– VBScript 文件.scr– 屏幕保护程序常被用作恶意软件目的防止执行恶意代码macOS 元数据移除移除项__MACOSX/目录.DS_Store文件目的清除可能包含敏感信息的多余元数据实现代码webserver/plcapp_management.py安全解压解压过程还包含额外安全措施根目录剥离自动移除单个顶层根文件夹路径规范化将所有路径转换为绝对路径并验证合法性目录创建安全地创建必要的子目录原子操作解压过程要么全部成功要么全部回滚进程安全特权要求运行时的某些操作需要提升权限实时调度设置 SCHED_FIFO 优先级套接字创建在/run/runtime/中创建 Unix 域套接字端口绑定绑定至 8443 端口特权端口建议使用sudo运行或授予特定能力capabilitiessudosetcap cap_sys_nice,cap_net_bind_serviceep build/plc_main进程隔离独立进程Web 服务器作为 Python 进程运行PLC 运行时作为独立的 C/C 进程运行仅通过 Unix 域套接字通信优势一个进程崩溃不会影响另一个进程可实现不同级别的权限内存隔离信号处理运行时能够优雅地处理信号SIGINT优雅关闭清理资源SIGTERM优雅关闭SIGSEGV捕获并记录日志如可能实现代码core/src/plc_app/plc_main.c网络安全端口暴露默认端口8443 (HTTPS) – OpenPLC 编辑器通信的 REST API建议使用防火墙限制访问仅暴露给可信网络远程访问可考虑使用 VPNDocker 端口映射dockerrun -p127.0.0.1:8443:8443...# 仅本地回环dockerrun -p8443:8443...# 所有接口Unix 域套接字套接字位置/run/runtime/plc_runtime.socket– 命令套接字/run/runtime/log_runtime.socket– 日志套接字安全性仅本地系统可访问文件系统权限控制访问不暴露至网络权限创建时带有受限权限仅运行时用户可连接数据安全数据库路径/var/run/runtime/restapi.db内容用户账户哈希密码会话数据保护措施文件系统权限SQLite 加密如配置建议定期备份日志敏感信息日志可能包含变量值IP 地址及连接信息带有文件路径的错误信息建议定期轮转日志限制日志文件访问权限共享前对日志进行脱敏处理编译后程序路径build/libplc_*.so内容编译后的 PLC 逻辑变量定义自定义功能块保护措施文件系统权限不通过网络传输带时间戳以进行版本控制Docker 安全容器隔离优势与宿主机进程隔离网络隔离除非显式暴露文件系统隔离注意事项实时调度可能需要特权模式挂载卷会暴露宿主机目录端口暴露会创建网络访问入口卷安全持久化卷dockerrun -v openplc-runtime-data:/var/run/runtime...内容含机密的.env文件含用户账户的数据库编译后的程序建议使用命名卷而非绑定挂载定期备份卷限制卷的访问权限镜像安全官方镜像ghcr.io/autonomy-logic/openplc-runtime:latest安全特性基于 Debian bookworm-slim最小攻击面通过 CI/CD 定期更新多架构支持签名镜像GitHub 容器仓库验证方法dockerpull ghcr.io/autonomy-logic/openplc-runtime:latestdockerinspect ghcr.io/autonomy-logic/openplc-runtime:latest安全最佳实践部署仅使用 HTTPS切勿禁用 TLS强密码强制密码复杂度定期更新保持运行时及依赖项为最新防火墙规则限制网络访问监控监控日志以发现可疑活动开发代码审查合并前审查所有变更静态分析使用 linter 和安全扫描工具依赖项扫描检查是否存在漏洞依赖输入校验验证所有用户输入错误处理错误信息中不暴露敏感信息运维定期备份备份/var/run/runtime/目录轮换密钥定期重新生成 JWT 密钥和胡椒审计日志检查日志中的安全事件更新证书在证书过期前续期最小权限原则以所需的最低权限运行漏洞报告若发现安全漏洞请勿公开提交 issue私下联系维护者提供详细的重现步骤留出补丁开发时间协调披露时间安全局限性已知限制自签名证书默认证书为自签名OpenPLC 编辑器可自动处理无速率限制API 端点未限制请求频率无账户锁定未提供暴力破解防护无审计追踪安全事件日志记录有限无静态加密数据库和文件未加密未来改进计划中的安全增强功能API 端点速率限制失败尝试后的账户锁定全面的审计日志数据库静态加密证书管理界面双因素认证基于角色的访问控制合规性考虑工业标准运行时专为工业自动化设计但未声称符合特定标准如 IEC 62443。各组织应进行安全评估根据需要实施额外控制措施遵循行业特定指南记录安全配置数据保护对于有数据保护要求的环境GDPR 等最小化数据收集实施数据保留策略提供数据导出功能记录数据流实施访问控制相关文档编辑器集成 – OpenPLC 编辑器如何连接运行时架构 – 系统概述API 参考 – REST 端点调试协议 – WebSocket 接口Docker 部署 – 容器安全故障排除 – 安全相关问题

相关新闻

腾讯应用宝专区正式入驻微软应用商店

腾讯应用宝专区正式入驻微软应用商店

11月13日下午消息,微软宣布腾讯应用宝专区正式入驻微软应用商店,首批将面向Windows预览体验用户开放使用。作为PC生态的移动化补充,应用宝app官方下载专区提供了基于Android的丰富移动应用,将为用户在PC场景带来更加便捷的移动应用…

2026/7/6 6:11:29 阅读更多 →
[Err] 3780 - Referencing column ‘email_id‘ and referenced column ‘id‘ in foreign key constraint ‘fk_

[Err] 3780 - Referencing column ‘email_id‘ and referenced column ‘id‘ in foreign key constraint ‘fk_

[Err] 3780 - Referencing column email_id and referenced column id in foreign key constraint fk_open_log_email are incompatible.CHARACTER SET utf8mb4 COLLATE utf8mb4_binCHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci

2026/7/5 6:32:56 阅读更多 →
电子世界的奇妙冒险:07-1调试与工程专题:运放/IC“神经病”全家桶!当模拟神器和数字大脑集体抽风时的终极救援指南

电子世界的奇妙冒险:07-1调试与工程专题:运放/IC“神经病”全家桶!当模拟神器和数字大脑集体抽风时的终极救援指南

👉07-1调试与工程专题:运放/IC“神经病”全家桶!当模拟神器和数字大脑集体抽风时的终极救援指南 电子江湖系列终于杀到“智商担当”关卡——运算放大器(Op Amp)和更广义的集成电路(IC)!运放是模拟电路里的“万能胶水”:放大、滤波、积分、比较、振荡,随便一贴就能让…

2026/7/5 1:08:12 阅读更多 →

最新新闻

华为云 ECS 上部署 Prometheus + Grafana 监控体系

华为云 ECS 上部署 Prometheus + Grafana 监控体系

ECS 规格: **ECS-Monitor** | 2vCPU / 4GiB(s6.medium.2) | Ubuntu 22.04 | 40GiB SSD | 1 | 跑 Prometheus Grafana Alertmanager | | **ECS-Target** | 2vCPU / 2GiB(s6.small.2) | Ubuntu 22.04 | 40GiB SSD | …

2026/7/6 6:10:48 阅读更多 →
如何用Zotero-Better-Notes实现笔记双向同步:告别手动复制粘贴的终极指南

如何用Zotero-Better-Notes实现笔记双向同步:告别手动复制粘贴的终极指南

如何用Zotero-Better-Notes实现笔记双向同步:告别手动复制粘贴的终极指南 【免费下载链接】zotero-better-notes Everything about note management. All in Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-better-notes 还在为Zotero和Obsidi…

2026/7/6 6:08:46 阅读更多 →
短剧出海中小企业主流广告素材监测工具(2026 最新,预算友好型)

短剧出海中小企业主流广告素材监测工具(2026 最新,预算友好型)

按中小团队适配度、短剧垂直能力、价格、国内访问稳定性分为 4 大类:短剧专精平价工具、通用高性价比工具、大厂专业工具(预算充足再选)、官方免费工具(基础备用)。一、短剧垂直专精(中小短剧团队首选&…

2026/7/6 6:06:46 阅读更多 →
Adobe软件激活新选择:5分钟掌握通用破解工具

Adobe软件激活新选择:5分钟掌握通用破解工具

Adobe软件激活新选择:5分钟掌握通用破解工具 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 还在为Adobe Creative Cloud的高昂订阅费而犹豫吗&#xff…

2026/7/6 6:06:46 阅读更多 →
智能网盘直链解析:重新定义文件下载体验

智能网盘直链解析:重新定义文件下载体验

智能网盘直链解析:重新定义文件下载体验 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅雷云…

2026/7/6 6:02:46 阅读更多 →
终极网盘下载加速方案:LinkSwift直链解析工具完整指南

终极网盘下载加速方案:LinkSwift直链解析工具完整指南

终极网盘下载加速方案:LinkSwift直链解析工具完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…

2026/7/6 6:02:46 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻