sql数据库

详解SQL注入原理

无人久伴 提交于 2020-03-07 13:37:19
看到有好多人在问:什么是SQL注入?我尝试google后发现,网上只有怎么SQL注入,并没有解释什么是SQL注入。在此我给大家解释一下。 在说明什么是SQL注入前先提下什么是静态页面,什么是动态页面。静态页面是一种实际存在的网页,无需经过服务器的处理,就可以直接加载读取的页面。静态页面一旦制作出来,除非修改源码,否则是无法对页面内的内容进行更改的。而动态页面与静态页面正好相反。动态页面并不是一个实际存在的网页,它的所有数据不是存储于页面上,而是存储于数据库中。只有当用户请求网页的时候,服务器才会从数据库读取数据,从而返回一个网页。所以不同的用户得到的网页内容也可能不同。举个例子,蓝莓's Blog首页就是一个典型的动态页面,不同的浏览器登陆时页面右上角提示内容也会不同,如果你是通过搜索引擎找到我的Blog的,右上角也会显示你所来自于的那个搜索引擎,如果你是直接访问本站,他会提示“您直接访问了本站! 莫非您记住了我的域名.厉害~我倍感荣幸啊 嘿嘿”,在举一个例子,比如你登陆QQ安全中兴,登陆后网页最上边会显示你的帐号,和你的称昵,这个也是一个动态页面。这点是静态页面无法办到的。而这里我们所要讲到的SQL注入就是利用动态页面的这种特性来入侵的。 其实当你打开一个动态页面的时候,就是在向服务器提交信息,服务器会根据你提交的信息,对数据库进行查询,从而返回适合你的信息。我们可以举个例子

Java Web----Java Web的数据库操作(二)

╄→尐↘猪︶ㄣ 提交于 2020-03-07 08:21:23
Java Web的数据库操作 三、JDBC操作数据库 上一篇介绍了JDBC API,之后就可以通过API来操作数据库,实现对数据库的CRUD操作了。 http://blog.csdn.net/zhai56565/article/details/9794225 下面仅以示例 的方式对数据库操作进行说明 1、 添加数据 使用PreparedStatement添加数据: String sql = "INSERT INTO tb_books(name,price,count,author)valuse(?,?,?,?)"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, "西游记"); ps.setDouble(2, 66.0); ps.setInt(3, 200); ps.setString(4, "吴承恩"); int row = ps.executeUpdate(); if(row > 0) System.out.println("成功添加了" + row + "条数据"); 使用Statement添加数据: String sql = "INSERT INTO tb_books(name,price,count,author)valuse(" + "西游记" + "," + 66.0 + "," +

ACCP 结业考试

好久不见. 提交于 2020-03-07 07:47:25
1) 在 SQL Server 中,为数据库表建立索引能够(C )。 索引:是SQL SERVER编排数据的内部方法,是检索表中数据的直接通道 建立索引的作用:大大提高了数据库的检索速度,改善数据库性能 A. 防止非法的删除操作 B. 防止非法的插入操作 C. 提高查询性能 D. 节约数据库的磁盘空间 2) 在 SQL SERVER 中,创建一个表使用(C )语句。 A. INSERT 增加数据 B. DROP 删除数据库,表,约束,视图,索引,存储过程 C. CREATE 创建数据库,表,视图,索引,存储过程 D. ALERT 创建约束或者修改存储过程 3) 在 SQL SERVER 中,下面关于视图说法错误的是(C )。 A. 对查询执行的大多数操作也可以在视图上进行 B. 使用视图可以增加数据库的安全性 C. 不能利用视图增加,删除,修改数据库中的数据 为了保证数据库的安全,尽量不要利用视图进行增删改操作 D. 视图使用户更灵活的访问所需要的数据 4) 在数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它是数据库设计的( B )阶段。 A. 需求分析 B. 概要设计 C. 逻辑设计 D. 物理设计 5) 在SQL Server 数据库中,如果强制要求grades表中的学员必须是Students表中存在的学员,以下描述正确的是( A )。 A. 在

数据库学习之路 三 SQL语言基础与操作运用

落爺英雄遲暮 提交于 2020-03-07 07:07:36
SQL语言基础 1986年10月由美国ANSI 公布最早的SQL标准。 1989年4月,ISO提出了具备完整性特征的SQL,称为SQL-89 。 1992年11月,ISO又公布了新的SQL标准,称为SQL-92(以上均为关系形式)。 1999年颁布SQL-99,是SQL92的扩展。、 、 SQL语言的特点 1. 一体化。 2. 高度非过程化。 3. 简洁。 4. 使用方式多样。 四部分:数据定义功能、数据控制功能、数据查询功能和数据操纵功能。 SQL的数据类型 数值型 字符串型 日期时间型 货币型 **准确型 整数 Bigint: 8字节, Int:4字节 Smallint:2字节, Tinyint:1字节 Bit:1位,存储1或0 小数 Numeric(p,q)或Decimal(p,q), 其中:p为数字位长度,q:小数位长度。 近似型 Float:8字节 Real:4字节 基本表的定义、删除及修改 1.定义基本表 使用SQL语言中的CREATE TABLE语句实现,其一般格式为: CREATE TABLE <表名>( <列名> <数据类型> [列级完整性约束定义] {, <列名> <数据类型> [列级完整性约束定义] … } [, 表级完整性约束定义 ] ) NOT NULL:限制列取值非空。 DEFAULT:给定列的默认值。 UNIQUE:限制列取值不重。 CHECK

用ASP.NET还原与恢复Sql server

馋奶兔 提交于 2020-03-07 06:37:51
上次做了个项目,涉及到数据库的还原和恢复,到网上找了一下,是利用SQLDMO实现的,只要添加SQLDMO引用就好了,然后利用下边的类的方法就可以实现了。   我把原作者的类扩充了一下,可以自动识别web.config里的数据库连接字符串,可以通过变量设置还原恢复的信息。   需要注意的时还原,还原的时候问题最大了,有别的用户使用数据库的时候无法还原,解决办法就是在MASTER数据库中添加一个 存储 过程: create proc p_killspid @dbname varchar(200) --要关闭进程的数据库名 as declare @sql nvarchar(500) declare @spid nvarchar(20) declare #tb cursor for select spid=cast(spid as varchar(20)) from master..sysprocesses where dbid=db_id(@dbname) open #tb fetch next from #tb into @spid while @@fetch_status=0 begin exec('kill '+@spid) fetch next from #tb into @spid end close #tb deallocate #tb go (下面这个存储过程失败)  

C#实现SQL数据库备份与恢复

这一生的挚爱 提交于 2020-03-07 06:35:58
有两种方法,都是保存为.bak文件。一种是直接用Sql语句执行,另一种是通过引用SQL Server的SQLDMO组件来实现: 1.通过执行Sql语句来实现 注意,用Sql语句实现备份与还原操作时,最好不要使用需要备份或还原的数据库连接,而使用master,否则可能会出现如下三个问题:(1)超时时间已到。在操作完成之前超时时间已过或服务器未响应。(2) 在向服务器发送请求时发生传输级错误。(provider:共享内存提供程序,error:0-系统无法打开文件。) (3)从服务器接收结果时发生传输级错误。(provider:共享内存提供程序,error:0 - 系统无法打开文件。) ,如果一定要用这个连接的话,要注意在执行Sql语句前加个Sql语句: use master,这样可能会解决以上问题。 ( 1)数据备份语句:backup database 数据库名 to disk='保存路径/dbName.bak' (2)数据恢复语句:restore database 数据库名 from disk='保存路径/dbName.bak' WITH MOVE 'dbName_Data' TO 'c:/tcomcrm20041217.mdf', --数据文件还原后存放的新位置 MOVE 'dbName_Log' TO 'c:/comcrm20041217.ldf' ---

用c#备份和还原sql server 2000数据库

僤鯓⒐⒋嵵緔 提交于 2020-03-07 06:31:13
用c#备份和还原sql server 2000数据库 [ 2005-11-7 14:09:00 | By: DinoSaur ] using System; using System.Data; using System.Data.SqlClient; namespace bachupsqlserver { /// <summary> /// 备份和还原sql server 2000数据库,在asp.net中文正式版和sql server 2000系统上通过 /// </summary> public class BackupData { private SqlConnection conn; public BackupData() { // // TODO: 在此处添加构造函数逻辑 // string sql="data source=localhost;initial catalog=master;password=;persist security info=True;user id=sa;workstation id=TOPS03496;packet size=4096";//注意默认数据库不要和恢复的数据库同名 init(sql); } /// <summary> /// 备份数据库 /// </summary> /// <param name="databasename

Web安全--Sql注入基础

风格不统一 提交于 2020-03-07 03:08:38
以下为视频笔记记录: SQL注入点的判断: 如果+1,-1页面有变化,就考虑联合查询,如果页面没有变化就考虑布尔类型,此时看是否有报错,如果有报错就是报错注入,如果没有报错也没有回显的话就看是否有布尔类型的状态,如果有布尔类型状态就考虑布尔盲注,如果以上都没有则看是否有延时注入 ?id = 35 + 1 / - 1 select * from tbName where id = 35 ?id = 35 ' 判断字符型还是数字型 select * from tbName where id=35' ?id = 35 and 1 = 1 是否有布尔类型的状态 ?id = 35 and 1 = 2 select * from tbName where id = 35 and 1 = 1 select * from tbName where id = 35 and 1 = 2 ?id = 35 and sleep ( 5 ) 是否有延时 四大基本手法: 联合查询 报错注入 布尔盲注 延时注入 demo注入点: http://localhost/show.php?id=33 注入点的判断: 对连接http://localhost/show.php?id=33是否是注入点进行判断 (1)变换id参数 当我们变换id 参数(33+1|33-1)的时候,发现同一个页面,show

SQL学习笔记二

人盡茶涼 提交于 2020-03-07 00:29:57
1、SQL 连接(JOIN) SQL join 用于把来自两个或多个表的行结合起来。 INNER JOIN:如果表中有至少一个匹配,则返回行 LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 FULL JOIN:只要其中一个表中存在匹配,则返回行 (1)SQL INNER JOIN 关键字 INNER JOIN 与 JOIN 是相同的。INNER JOIN 关键字在表中存在至少一个匹配时返回行。 语法如下: SELECT column_name ( s ) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name ; 或 SELECT column_name ( s ) FROM table1 JOIN table2 ON table1.column_name = table2.column_name ; (2)SQL LEFT JOIN 关键字 LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。 例如: “Websites” 表 “access_log” 网站访问记录表 执行以下语句: SELECT Websites.name,

如何安装SQL数据库和连接Navicat Premium

ε祈祈猫儿з 提交于 2020-03-06 19:55:10
文章目录 一.安装SQL数据库 二.使用Navicat Premium连接数据库 一.安装SQL数据库 第一步,当然是先获取数据库这个东西,嘿嘿 mysql 选择第一个下载即可,下载好,是这个样子的: 然后需要建立一个ini配置文件,右键记事本加入下列代码: [ mysql ] # 设置mysql客户端默认字符集 default - character - set = utf8 [ mysqld ] # 设置 3306 端口 port = 3306 # 设置mysql的安装目录 basedir = E : \mysql\mysql - 8.0 .19 - winx64 # 设置mysql数据库的数据的存放目录 datadir = E : \mysql\mysql - 8.0 .19 - winx64\data # 允许最大连接数 max_connections = 20 # 服务端使用的字符集默认为 8 比特编码的latin1字符集 character - set - server = utf8 # 创建新表时将使用的默认存储引擎 default - storage - engine = INNODB 然后保存为ini文件,有些人可能保存为ini后缀的文件,但是打开却还是txt文件,只需要: 选择显示文件后缀就可以修改文件类型了。然后再创建一个名为data的空文件夹即可