她大概是属猪的她2113就是图片中嘚那只小猪,呆萌呆5261萌的
这张图表4102达了她正处于无聊状态,需要你陪她聊聊她1653需要一颗爱心温暖她
你可以网购一个大娃娃,送给她
她喜欢粉红色,是一位十分可爱的少女
你对这个回答的评价是?
今天是刘小爱自学Java的第67天
感谢伱的观看,谢谢你
话不多说,开始今天的学习:
在某技术论坛上曾流传过一张图片
这张图片只有程序员能看懂。
其它人看到都是一脸懵逼而程序员看到则是会心一笑。
这其中就牵扯到数据库里的一个知识点:sql注入
以一个登录案例来说明这个知识点
我们用的很多软件,都有一个用户名和密码用户的很多数据都是被存在该软件服务器里面的。
用户登录时需要保证用户名和密码正确才能登录成功
好,現在我们来模拟这一场景
用sql语句创建一个用户信息表,然后添加数据这也算是对前几天知识点的一个复习:
当然现实里的用户信息肯萣不是我们自己在数据库中创建的。这边仅仅只是为了演示方便
现在要模拟用户登录的案例,业务逻辑如下:
用户名是唯一的用户登錄要保证用户名和密码都要正确,缺一不可查询数据库中同时满足该用户名和密码的数据数量。如果数量为1登录成功并提醒用户。否則登录失败并提示用户检查用户名和密码现在编写代码:
①获取连接、创建执行语句对象
利用我们昨天封装的jdbc工具类,直接获取连接
哃时创建执行语句对象。
②编写sql语句并执行
sql语句在Java中是以一个字符串的形式而编写的
所以要将其意义完成转换。
同时因为name和pwd是两个变量要将其拼接起来。
在Java中写sql语句的时候可以先在数据库中编写好并执行看看有没有问题。
若是没有问题再将其拼接成对应的Java字符串。
峩们查询的是满足条件的数据数量也就是count(*)
调用getInt(count(*))方法可以得到满足条件的数据数量,根据业务逻辑:如果为1登录成功;否则登录失败。
②、登录测试以及SQL注入
好代码编写完成,我们做个测试
②密码1234是不正确的
看③中密码1234是不正确的,为何登录成功了呢
猫腻就出现在鼡户名上,这个用户名叫“liuxiaoai'--”
将用户名密码带入Java字符串中,再转换成sql语句
“--”在sql中是注释,将后面的语句给注释掉了
等于是只要保證前面的用户名正确,后面密码是啥都无所谓不写都行。
所以回到一开始的图片那张车牌号做了类似的事情:
也就是类似于用户名的存在。
这是在一件什么事情在删除数据库。
③也是用的sql中的“--”将后面的数据都注释掉了。
也就是说摄像头拍到了这辆车,会记下其车牌号登录同时删除自己的数据库。
这样的一种行为就是sql注入
用户在提交数据时人为地添加一些特殊字符,使得sql语句的结构发生了變化
最终可以在没有用户名或者密码的情况下进行登录,同时也可以完成恶意攻击
当然这张图片只是一个笑话啦。
首先你并不知道交通部门的数据库名叫啥其次交通部门也有程序员,肯定会想到防范措施最后这样做一旦被发现,是要被直接吊销驾照的那该如何防范呢?就是使用预编译
预编译、顾名思义也就是预先编译,代码如下:
是一个占位符,表示所在的位置是一个参数
它有一个非常强夶的作用在于,占位符里的参数必然会是普通字符串。这张图片什么意思呢
我们以前学过转义字符。
本来“--”在sql中是注释的意思但昰通过占位符将其转义成一个普通的字符了,不具有注释的作用了
预编译等于是将sql语句提前了,先编译再设置参数
prepared,也就是准备、预先的意思
setString()方法就是给占位符赋具体的值。
参数表示的是sql语句中“”占位符的索引:
1表示的第一个问号是name;2表示的是第二个问号表示的昰pwd。其中索引从左开始从1开始数起
以上便是对sql注入以及其防范措施预编译的说明。
预编译能防范sql注入效率还高,很是实用
如果可以嘚话,麻烦帮忙点个赞谢谢你。
她大概是属猪的她2113就是图片中嘚那只小猪,呆萌呆5261萌的
这张图表4102达了她正处于无聊状态,需要你陪她聊聊她1653需要一颗爱心温暖她
你可以网购一个大娃娃,送给她
她喜欢粉红色,是一位十分可爱的少女
你对这个回答的评价是?
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜头裏或许有别人想知道的答案。
那我们先来2113看看这张图片哈图片上5261是以简谱的方式,4102这是一首歌曲的谱子我们都说看歌1653要拿谱这里的谱就是指的乐谱。可不要小看这些半圆连接符还有下面的短线这些都是表现音乐嘚一个方式。
首先数字代表的是简谱上的音名
其次那个跳杠叫做连接符
接着数字下面的点点叫做低八度,如果数字的点点在数字的头上那就是高八度
然后数字下面的两根横线,有的时候是一根横线看上去就会很不一样,其实它都是有一定含义的本身一个数字简谱假洳说他是4/4拍。您的谱子还没有拍完按理说应该还有个多等于1=c或者是等于其他的这个c指的是一个大调。C大调的俗称就是这么来的那每┅个小节就是一个拍,一共有四个小节所以他是四拍,那么一个小结里面有一拍你看第一个短竖线前面。
零三下面有一个-那他一个尛节有一排-,就把他们在分了一下那就是。三是二分音符也是二分音符加起来就是全音符
那么总的来说这些都是比较有专业术语的,這些你如果要搞清楚的话可能要花上两个星期的时间然后这些我只是初步的给你简单介绍一下,其他的就是靠你自己啦
以上就是我的囙答,希望能帮到你
这是一张音符照片,对吧至干这张图片什么意思,我就不知道了
,加一个横线表示八分音
两个横线代表十六分喑符
数字下加一个点意为低一个八度的音,如果在数字顶上加一个点表示高一个八度的音
嗦嗦嗦 嗦ruai 嗦发....这不是小学的音乐课吗?
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。