发动态
综合 最新发布 最新回复
图文
列表
很多小伙伴看到了能够快速发现问题,当 company_id 为 null 的时候,会导致全表更新。但是也有小伙伴不解,自己平时就是这么写的呀,也没什么问题,如果有问题,那么上面的 SQL 该怎么改呢?松哥来和大家简单聊几句。一 防止全表更新如果在生产环境中使用 UPDATE 语句更新表数据,此时如果忘记携带本应该添加的 WHERE 条件,那么后果不堪设想。那么怎么避免这个问题呢?二 sql_safe_updatessql_safe_updates 是 MySQL 数据库中的一个参数,它的作用是增强数据安全性,防止因误操作导致的数据丢失或破坏。具体来说,当 sql_safe_updates 设置为 ON(启用)时,MySQL 将阻止执行没有明确 WHERE 子句的 UPDATE 或 DELETE 语句。这意味着如果试图运行一个不包含 WHERE 条件来限定更新或删除范围的 DML 语句,MySQL 会抛出一个错误。而当 sql_safe_updates 设置为 OFF(禁用)时,MySQL 不会对此类无条件更新或删除操作进行特殊限制,允许它们按常规方式执行这个参数可以配置在会话级别或全局级别。在会话级别,可以通过执行 SET sql_safe_updates = 1; 命令来启用,这只对当前连接有效。在全局级别,可以通过 SET GLOBAL sql_safe_updates = 1; 命令或在 MySQL 配置文件中设置,这会影响服务器上所有新的会话,但是这个配置不会修改当前会话。启用 sql_safe_updates 参数可以减少因人为失误引发的重大数据事故,尤其适合开发环境和对数据完整性要求严格的生产环境。我们可以先执行 SHOW VARIABLES LIKE '%sql_safe_updates%'; 查看当前配置:然后执行 SET sql_safe_updates = 1; 去更新,更新之后再去查看配置,发现 sql_safe_updates 就已经开启了:这个时候,假设我们执行如下 SQL: UPDATE user set username='javaboy'; 就会报一个错误:需要注意的是,启用 sql_safe_updates 参数可能会影响现有应用程序的正常运行,特别是那些依赖于无条件更新或删除操作的程序,因此在生产环境中启用之前,必须确保所有相关的应用程序代码已经过严格审查和适配。顺便吆喝一句,技术大厂,前后端测试[捞人][捞人],待遇还可以,感兴趣可以试试。三 SQL 插件MyBatis-Plus 提供了一个非法 SQL 拦截插件叫做 IllegalSQLInnerInterceptor。这是 MyBatis-Plus 框架中的一个安全控制插件,用于拦截和检查非法 SQL 语句。这个插件主要提供了四方面的功能:识别并拦截特定类型的 SQL 语句,如全表更新、删除等高风险操作。确保在执行查询时使用索引,以提高性能并避免全表扫描。防止未经授权的全表更新或删除操作,减少数据丢失风险。对包含 not、or 关键字或子查询的 SQL 语句进行额外检查,以防止逻辑错误或性能问题。插件用法也简单,配置一个 Bean 即可: @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 添加非法SQL拦截器 interceptor.addInnerInterceptor(new IllegalSQLInnerInterceptor()); return interceptor; } } 配置完成后,如果执行了不带 where 条件的 update 或者 delete 语句,就会报如下错误。但是!!!如果你的 SQL 后面有个 where 1=1,那么这样的 SQL 是不会被 IllegalSQLInnerInterceptor 插件识别并拦截的。四 IDEA 插件利用 IDEA 的一些插件,也可以检测到有风险的 SQL,比如松哥常用的这个:不过这些插件不一定能检测出来文章一开始所提出的问题。五 Code Review日常的 Code Review 也不可少,很多问题都是在 CR 的时候发现的。六 问题解决除了上面提到的各种办法之外,对于本文一开始提出的问题,这个有问题的 SQL 还可以做哪些修改呢?欢迎小伙伴们评论区给出自己的答案~松哥也会在评论区给出我的看法!——转载自:江南一点雨#畅聊专区#
这样的SQL太吓人了
开源硬件平台
最近有MP6908设计了一个整流电路,不知道为什么不工作,VDD有9V电压,MOS管栅极没有电压输出。请路过的高手帮看看。
开源硬件平台
开源文章:江南大学25年第一次培训\n\n简介:本文章记录江南大学2025学年第一次培训,得益于嘉立创的支持,我校此次培训圆满结束。此次培训内容为大功率DC-AC逆变电路。\n\n文章链接:[https://oshwhub.com/article/jiangnan-university-25-years-the-first-training]\n#高校动态#
开源硬件平台
开源文章:【云南交通职业技术学院】智联创新社——简易PWM信号产生电路培训圆满完成\n\n简介:云南交通职业技术学院智联创新社2025年5月培训——绘制基于NE555的简易PWM信号产生电路,此次培训的目的是为了本社团的各个成员初步掌握PCB布局,布线能力,加强各位同学的电工电子的学习。\n\n文章链接:[https://oshwhub.com/article/yunnan-communications-vocational-and-technical-college-zhilian-chuang-xinshe-simple-pwm-signal-generation-circuit-training-succe]\n#高校动态#
开源硬件平台
嘉立创又卡bug啦~ 但是我的PCB打样券又可以正常激活...
开源硬件平台
各位大佬,原理图中电压电流限制怎么实现,用器件还是什么?有设计规则吗? #DIY设计# #DIY设计# #DIY设计# #嘉立创PCB# #高校动态#
开源硬件平台
开源文章:【实验室】灵韵启航者V1.0—模块化多主控嵌入式学习扩展平台|中北大学\n\n简介:“灵韵启航者”是一款专为嵌入式初学者和电子DIY爱好者设计的高度集成、主控可换的多功能学习扩展板。板载10类电子模块,覆盖传感器、执行器、人机交互三大领域,是嵌入式入门及创意实现的“一站式“解决方案。\n\n文章链接:[https://oshwhub.com/article/laboratory-aura-starter-v10-modular-multi-master-embedded-learning-extension-platform-north-university-of-china]\n#高校动态#
开源硬件平台
小房子读到了,里面也有住户了(我感觉Windows端的软件部分可以先告一段落了)
开源硬件平台
左边那个线条,这是个什么鬼玩意,选不中?返回也去不掉?一顿操作都没搞定,结果关了窗口,再次打开他又没了[微笑]
开源硬件平台
硬件开始生产了,提前先把上位机给改了吧[哭笑]顺道写了写开源文档[看]这周工作有点严重超额
开源硬件平台
电赛准备
友友们,本人(纯小白)现在想准备七月份的电赛,有没有哪些模块是必须要准备的吗(我们队想着主要是测量类和仪器仪表类的题),欢迎各位大佬提出建议,谢谢大家帮助
开源硬件平台
不管是玩单片机还是嵌入式linux,基本上都会接触到bootloader,所以bootloader程序也是一个关键的组件,进行硬件初始化,应用程序的合法性、完成性检测、升级功能等等都与其息息相关。像一些在ram运行的应用程序,或者是一些运行内存比较小的MCU等等,它需要保证从外部存储器中读取的应用程序是可信的,不能拿过来就执行,那往往是不安全的,特别是为了防止恶意程序的注入和攻击,在Bootloader程序中实现一定的安全机制就非常有必要了~那么bug菌今天就大致聊聊,一些常用的Bootloader安全机制的设计:1、进行image校验image校验我们也常叫镜像校验,Bootloader程序可以对从外部存储器中读取的应用程序镜像进行校验,以确保其完整性和正确性,常见的镜像校验方式包括CRC、哈希值等。当然你如果想简单一点使用求和检验也是可行的,将应用程序镜像中每个字节的值相加,得到一个校验和。Bootloader程序将计算得到的校验和与预先存储在应用程序镜像中的校验和进行比较,如果两者相等,说明应用程序镜像没有被篡改,校验和的优点是计算简单,缺点当然就是校验能力有限,更易受攻击。而相比求和校验,CRC等是一种更加可靠和安全的校验方式,它可以检测出更多的错误,并且不易受攻击。在STM32中,CRC校验可以使用硬件或软件实现。硬件CRC校验可以使用STM32的CRC模块,直接对应用程序镜像进行校验,速度快、精度高。软件CRC校验则需要Bootloader程序自行实现CRC算法,速度较慢,但也可以得到较好的校验效果。如果校验通过,则可以加载应用程序镜像;如果校验失败,则应该拒绝加载应用程序镜像,并给出相应的提示。镜像校验是可以保证从外部存储器中读取的应用程序是可信的,避免恶意程序的注入和攻击。如果镜像校验失败,Bootloader程序可以拒绝加载应用程序镜像,避免恶意程序的注入。2、签名认证签名认证并不是一个加密和解密的过程,它是一种数字签名技术。数字签名是一种用于确保电子文档的完整性和认证性的技术,它使用密钥对(公钥和私钥)来生成和验证签名。数字签名的过程如下:1、生成签名:文档的发送者使用私钥对文档进行哈希运算,然后使用私钥对哈希值进行加密,生成签名。2、验证签名:文档的接收者使用公钥对签名进行解密,得到哈希值,然后对文档进行哈希运算,得到另一个哈希值。接收者比较这两个哈希值,如果相等,则说明文档没有被篡改,并且签名是可信的。需要注意的是,数字签名技术依赖于密钥对的安全性,私钥需要妥善保管,防止泄露和丢失,公钥需要预置在Bootloader程序中,确保其可信和安全。签名认证需要使用一组密钥对,包括私钥和公钥。开发者使用私钥对应用程序进行签名,Bootloader程序使用公钥进行认证。如果签名认证失败,Bootloader程序可以拒绝加载应用程序镜像。3、内存保护在STM32的Bootloader中,内存保护是一种重要的安全机制,可以保护Bootloader程序和其他重要的代码和数据不被应用程序覆盖、修改或篡改。内存保护通常使用硬件或软件实现。在STM32中,硬件内存保护可以使用CPU的内存保护单元(MPU)实现,软件内存保护可以使用内存管理单元(MMU)或软件实现的保护机制,具体使用哪种需要看资源情况。硬件内存保护可以将MCU的内存空间划分为若干个区域,并为每个区域配置不同的访问权限。Bootloader程序可以将应用程序加载到特定的区域中,防止应用程序覆盖或修改Bootloader程序和其他重要的代码和数据。硬件内存保护的优点是速度快、可靠性高,缺点是配置复杂,需要占用一定的硬件资源。软件内存保护可以使用MMU或软件实现的保护机制,但一般有MMU单元的都属于微处理器了,而微控制器。MMU是一种硬件单元,用于将虚拟地址映射到物理地址,并可以配置不同的访问权限。软件实现的保护机制可以在Bootloader程序中实现一些保护代码,用于检测和防止应用程序的篡改和攻击。软件内存保护的优点是灵活性高,缺点是速度较慢,可靠性较低。内存保护可以保护Bootloader程序和其他重要的代码和数据不被应用程序覆盖、修改或篡改。在实现内存保护时,需要注意区域划分、加载位置、访问权限、保护代码等方面的问题。4、使用只读存储器只读存储器(ROM)通常是一种非易失性存储器,具有读取快、安全可靠、不易受攻击等优点。将Bootloader程序放在只读存储器中,可以保证Bootloader程序的完整性和安全性,防止恶意程序的注入和攻击。只读存储器也可以是MCU的Flash、ROM等。5、最后值得注意的是,Bootloader程序的安全机制应该根据实际的应用场景和需求进行设计和实现。安全机制的增加会增加系统的复杂性和开发成本,因此应该在安全性和可用性之间进行权衡。
四种Bootloader程序安全机制设计
开源硬件平台
相同模块的电路终于可以布线也复用过来了!是早就有了吗?
来自【睡不着,分享一个嘉立创EDA的一个小技巧☝️🤓-哔哩哔哩】 https://b23.tv/yEwUAPP #嘉立创EDA#
32次播放
开源硬件平台
请教一下CW1353原理图,同口充电使用电平反转电路驱动NMOS,但是栅极电平只有6伏左右,不能关断
#DIY设计#
开源硬件平台
社区有大神吗? KXTJ3-1057传感器 体形不反转 是硬件有问题吗? 还是可以通过软件去实现反转
开源硬件平台
KXTJ3-1057体形不反转的原因是什么
开源硬件平台
最新活动免费打印的胖猫玩具
#3D打印#手办 #玩具
51次播放
开源硬件平台
开源文章:基于Ai8051U单片机的燃气企业安全报警系统公用部分\n\n简介:在贵州水利水电职业技术学院领导关心和嘉立创EDA的支持下,基于Ai8051U单片机的燃气企业安全报警系统在2025年6月贵州省第十九届”挑战杯“学院选拔赛中获第一名,在贵州省终审决赛中获得二等奖。\n\n文章链接:[https://oshwhub.com/article/common-part-of-safety-alarm-system-of-gas-enterprise-based-on-ai8051u-single-chip-microcomputer]\n#技术干货#
开源硬件平台
优质硬件创作分享平台
推荐话题 换一批
#嘉立创PCB#
#DIY设计#
#嘉立创3D打印#
#畅聊专区#
#嘉立创免费3D打印#
#创享2025#
#618金豆嗨购节#
#高校动态#
查看更多热门话题
打赏记录
粤公网安备44030002004666号 · 粤ICP备2023121300号 · 用户协议 · 隐私政策 · 侵权举报 · ISO/IEC · Copyright © 2024 嘉立创社区版权所有
服务时间:周一至周六 9::00-18:00 · 联系地址:中国·深圳(福田区商报路奥林匹克大厦27楼) · 媒体沟通:pr@jlc.com · 集团介绍
移动社区