2023-10学习笔记

news2024/9/25 1:20:19

1.sql注入

不管是上一篇博客,通过java代码执行sql

还是我们常用的Mybatis的#{}和${}

都会提到sql注入的问题

1.1啥是sql注入

应该知道是说传入无关的参数,比如本来是想要一个where条件查询参数 但是你拼了一个drop

比如 原来的sql 

select * from table_a where a.name = ${}

然后你传入

s;drop table table_a;

那此时整个sql就变成了

select * from table_a where a.name = s;drop table table_a;

你查完把表删了

1.2为什么#{}就可以防止sql注入

还是用1.1的例子,把${}改成#{}

你原来

select * from table_a where a.name = #{}

你传入

 s;drop table table_a;

sql最后变成了

select * from table_a where a.name = 's;drop table table_a;'

看到没, 你只是传进来了一个字符串而已,对数据安全啥影响没有

1.3 java代码直接执行sql怎么防止sql注入

PreparedStatement

通过?占位符 和 参数绑定的方式

【运维】PreparedStatement防止SQL注入_37543485的博客-CSDN博客

参数化查询:

        PreparedStatement允许您将SQL查询字符串与查询参数分开。查询参数是在执行查询之前预编译的,因此不会受到用户输入的直接影响。
        查询参数以占位符的形式(通常是问号?)出现在SQL查询字符串中,而不是将用户输入嵌入到查询中。
预编译:

        在执行之前,PreparedStatement会将SQL查询字符串和参数一起发送到数据库进行预编译。在这个阶段,数据库会验证参数的数据类型,并确保不会对它们进行解释为SQL代码的尝试。
参数绑定:

        一旦查询预编译完成,您可以将参数值绑定到查询参数上。这些参数值将替代占位符,并且由数据库安全地处理。
参数绑定通常使用setXXX()方法,其中XXX是参数的数据类型(例如,setString()、setInt()等)。
安全性:

        由于参数是在查询执行之前绑定的,数据库可以确保它们不会被解释为SQL代码。这样,即使用户恶意输入带有SQL注入攻击的数据,也不会影响查询的执行。
        参数化查询还能够防止常见的SQL注入攻击,例如将单引号 ' 插入到查询中,因为这些字符会被视为参数的一部分而不是SQL代码的一部分。

 2.Mybatis中if标签中的and后要有空格

本来不写空格也没事,但是为了代码规范,好看些 and后都会有空格 。

但是我这次没加空格,在<where>和<if> 标签共同使用的情况下,居然没给我自动去掉第一个and 导致sql执行报错了

至今不知道为啥,但是为了代码好看,还是加上吧

 3.时间格式的前后端转换

3.1后端用date接收前端字符串日期

前台传字符串日期参数,后台用Date接收;后台Date类型,前台自动转日期字符串「建议收藏」 - 思创斯聊编程

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    Date dateEnd;

3.2 后端date返回给前端日期字符串

 @JsonFormat(pattern = ""yyyy-MM-dd HH:mm:ss"", timezone = "GMT+8")
    Date taskLatestStartTime;

4.boolean类型的属性定义不要用is开头

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

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

相关文章

经典卷积神经网络 - ResNet

ResNet是一种残差网络&#xff0c;咱们可以把它理解为一个子网络&#xff0c;这个子网络经过堆叠可以构成一个很深的网络。 我们一直在加深神经网络&#xff0c;但是加深不一定只会带来好处。 残差块 串联一个层改变函数类&#xff0c;我们希望能扩大函数类残差块加入快速通…

Unity的碰撞检测(三)

温馨提示&#xff1a;本文基于前一篇“Unity的碰撞检测(二)”继续探讨两个游戏对象具备刚体的碰撞检测&#xff0c;阅读本文则默认已阅读前文。 &#xff08;一&#xff09;测试说明 在基于两个游戏对象都具备碰撞器和刚体且属性一致的条件下&#xff0c;若二者刚体的BodyType…

常用数据分析可视化图表解析之【雷达图】

雷达图&#xff08;Radar Chart&#xff09; 基础介绍 雷达图是一种常用的数据可视化图表&#xff0c;通过使用多边形的边和顶点来表示多个变量或维度的数据。每个变量或维度对应于雷达图的一个轴&#xff0c;数据值则通过距离中心点的距离来表示。 雷达图可以直观地展示不同…

为何各大厂现在只招测试开发了?

近期闲着无聊晚上有空会刷下boss&#xff0c;发现现在各种互联网大厂绝大部分测试相关岗位都变成了测试开发工程师&#xff0c;这就是说就算最后是被拉去做业务测试&#xff0c;也得具备测试开发的能力了&#xff0c;这是间接把行业门槛变高了&#xff1f;&#xff1f;那不会测…

项目管理-2023西电网课课后习题答案-第五章

文章目录 第五章答案1-10 [✅] 第一章答案[✅] 第二章答案[✅] 第三章答案[✅] 第四章答案[✅] 第五章答案 第五章答案 1-10

Vue标准插槽和作用域插槽区别与用法详解

文章目录 1. 标准插槽&#xff08;Standard Slots&#xff09;2. 作用域插槽&#xff08;Scoped Slots&#xff09;3.标准插槽Vs作用域插槽4.作用域插槽高级用法1. 作用域插槽中的默认值2. 作用域插槽的多个插槽3. 作用域插槽的动态插槽名4. 作用域插槽中的函数传递 5.作用域插…

王道p149 3.编写后序遍历二叉树的非递归算法(c语言代码实现)

本题代码如下 void postorder(tree* t) {struct treenode* stack[100];//初始化结构体数组int top -1;//让栈顶指向-1treenode* p *t;while (p || top ! -1)//p不为空&#xff0c;并且栈不为空{if (p){top;//p不为空&#xff0c;将p压入栈中stack[top] p;p p->lchild;/…

thinkphp6项目使用多应用开发

使用composer安装项目&#xff0c;命令&#xff1a;composer create-project topthink/think thinkphp6使用多应用开发&#xff0c;安装多应用扩展&#xff0c;命令&#xff1a;composer require topthink/think-multi-app安装多应用扩展成功后&#xff0c;删除app/controller文…

编译报错 internal compiler error: Segmentation fault 解决方法

问题描述 最近在使用虚拟机 ubuntu 20.04 编译 musl gcc 工具链时&#xff0c;遇到一个奇怪的问题&#xff0c;编译过程中异常退出&#xff0c;清理了多次重新编译&#xff0c;发现编译报错提示的信息是 internal compiler error: Segmentation fault 由于之前是可以正常编译的…

java 接口返回乱码 接口中文返回乱码 请求接口返回\u5317\u4eac乱码 okhttp请求返回中文乱码

1. 对接第三方请求&#xff0c;返回参数中文乱码&#xff0c;如下图所示。 2. 原因&#xff1a;中文被unicode编码导致。okhttp设置返回编码格式也不生效&#xff1a; // String result new String(response.body().bytes(), "utf-8");3. 解决方案&…

JS三种常见的存储机制

1.localStorage localStorage是HTML5引入的一种持久化存储机制&#xff0c;用于在浏览器中长期保存数据。localStorage中存储的数据没有过期时间&#xff0c;除非被显式清除或代码删除。存储在localStorage中的数据对于同一个域名下的所有页面都是共享的。localStorage可以存储…

香港优才计划线上申请官网入口地址在此,附自己申请攻略!

香港优才计划线上申请官网入口地址在此&#xff0c;附自己申请攻略&#xff01; 2023年4月份开始&#xff0c;香港入境处调整了优才计划申请方式。申请人须使用电子化服务递交有关申请&#xff0c;也就是线上申请&#xff01;入境处不再接受亲身递交、以邮递或投递方式递交的有…

腾讯云抱歉不满足产品首购条件解决方法

购买腾讯云服务器提示“抱歉&#xff0c;检测到相同实名认证主体已购买&#xff0c;不满足产品首购条件&#xff0c;您可了解其他商品。”&#xff0c;购买腾讯云特价云服务器是有新用户首购限制的&#xff0c;说当前腾讯云认证主体的其他账号已经购买过云服务器&#xff0c;一…

WAS项目更新单个文件

WAS项目更新单个文件 websphere替换单个文件时&#xff0c;相对路径是ear目录作为根路径 ‍ ‍ 比如要替换zjyct_testgkjz.jsp,路径只要填写BocGkjzWeb.war/zjyct_testgkjz.jsp&#xff0c;如果填写绝对路径&#xff0c;将造成如上图find出来的第一条所示结果问题 ‍

什么是有效种草!900万播放成B站“网红品牌”

- 导语 众所周知&#xff0c;B站早期是二次元小众社区&#xff0c;所以ACG&#xff08;动画、漫画、游戏三者的合称&#xff09;内容一直是B站的核心品类&#xff0c;B站经过多品类内容的摸索和发展&#xff0c;一直到现在成为年轻一代聚集的多元化社区&#xff0c;但ACG内容仍…

C++宏的作用

四种预编译命令:头文件包含&#xff0c;条件编译&#xff0c;宏替换和布局控制。 1.头文件包含 #include 文件分别用两种形式包含&#xff0c;一种将文件用“”包含&#xff0c;另一种用<>包含。 两种包含方式的不同之处在于&#xff0c;它们的查找策略不同。 #incl…

【递归、搜索与回溯算法】第五节.129. 求根节点到叶节点数字之和和814. 二叉树剪枝

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;递归、搜索与回溯算法 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&am…

基于Java的医药进销存管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

CMake 坑之添加文件后不修改CMakeList.txt,则文件加不进来

问题&#xff1a; 我在一个文件夹中加了一个.h和对应的cpp。 这里.h中的类会被导出。 但是怎么都导不出来。 我试了无数次的 clean and rebuild 都没用。 分析&#xff1a; 做了很多实验。发现是新建的文件没有被读取进来。 解决方法&#xff1a; 改进了下对应的CMakeL…

嵌入式软件工程师面试题——2025校招专题(三)

说明&#xff1a; 面试题来源于网络书籍&#xff0c;公司题目以及博主原创或修改&#xff08;题目大部分来源于各种公司&#xff09;&#xff1b;文中很多题目&#xff0c;或许大家直接编译器写完&#xff0c;1分钟就出结果了。但在这里博主希望每一个题目&#xff0c;大家都要…