志在指尖
用双手敲打未来

sql脚本如何编写(sql脚本太大怎么执行)

sql脚本如何编写

随着web应用开发的发展,有很多的程序员进入到这个职业中,可是这批人的技能水平和编程经历参差不齐,很多人在编写代码的时分,没有对用户输入的参数进行合法性校验,使得这成为了一个潜在的安全隐患。假如遇到技能高手,发现这个问题,他能够提交一段数据库查询脚本,获取对自己想要的数据,这就是咱们说的sqlInjection,即sql注入。
一布景
某高校开发了一个网课体系,学生需在该体系中选课并完结学习,数据库中有一张表course,这张表存放着每个学生的选课信息及完结状况,详细规划如下:
数据如下:
本体系中数据库采用MySQL,经过数据库驱动Jdbc对数据库进行操作。
该体系供给了一个功用查询指定学生的课程完结状况的API接口,代码如下。
二注入进犯演示
1.正常状况下要查询一个学生的选课及完结状况,咱们只需要传递该学生对应的ID即可。
这个sql脚本很简单,如下:
2.看起来好像没有问题对吧,可是你信不信我经过这个接口能够拿到一切学生的数据,不信?要完成很简单,只需保证这条sql脚本where条件为真就能够了,如下脚本:
详细怎样做大呢?
也很简单,咱们只需要在请求该接口的时分将studendId设置为4or1=1,这样这条sql的where条件就恒真了,sql也就等同于下面这样
请求结果如下,咱们拿到了这张表的一切数据
3.查询mysql版本号,运用union拼接sql
unionselect1,1,version(),1
4.查询数据库名
unionselect1,1,database(),1
5.查询mysql当前用户的一切库
unionselect1,1,(SELECTGROUP_CONCAT(schema_name)FROMinformation_schema.schemata)schemaName,1
经过上面的演示你有何感想?后背有没有阵阵发凉?
这儿恐惧不仅仅是能够获取到你的一切数据,更可怕的是他还可对你的数据库进行更新、删除(删库、删表)等等操作。
三如何防止sql注入
1.代码中让sql预编译是最佳的防止sql注入进犯的方案
这样咱们传进来的参数4or1=1就会被当作是一个student_id,所以就不会呈现sql注入了。
2.承认每种数据的类型,比如是数字,数据库则有必要运用int类型来存储
3.规则数据长度,能在一定程度上防止sql注入
4.严厉限制数据库权限,能最大程度减少sql注入的损害
5.防止直接呼应一些sql反常信息,sql发生反常后,自定义反常进行呼应
6.过滤参数中含有的一些数据库关键词.sql

sql脚本太大怎么执行

我把一个数据库的架构及数据都已脚本的方法复制下来,再去新建一个数据库想把脚本执行一下,但提示如下过错:
问题描绘:
当客户服务器不允许直接备份时,往往通过导出数据库脚本的方法来部署-复原数据库,
但是当数据库导出脚本很大,用MicrosoftSQLServerManagementStudio执行脚本时,往往会遇到“内存不足”的提示。
解决办法:
用微软自带的sqlcmd东西,能够导入执行。以SQLServer2008R2版本为例:
第一步:Win+R键入:cmd命令,敞开命令行东西;
第二步:键入:cdC:\ProgramFiles\MicrosoftSQLServer\100\Tools\Binn(具体目录路径跟你装置的SQL方位有关,自己能够百度如何查询所装数据库的装置方位)
第三步:键入:sqlcmd-S.-Usa-P123-dtest-idata.sql
参数说明:-S服务器地址-U用户名-P暗码-d数据库名称-i脚本文件路径
服务器地址能够写.比较轻松,也可写(local)或者IP地址

未经允许不得转载:IT技术网站 » sql脚本如何编写(sql脚本太大怎么执行)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载