sql数据库

字符约束条件的SQL注入攻击

﹥>﹥吖頭↗ 提交于 2020-03-09 05:44:55
引言 目前值得高兴的是,开发者在建立网站时,已经开始关注安全问题了——几乎每个开发者都知道SQL注入漏洞了。在本文中,我将为读者介绍另一种与SQL数据库相关的漏洞,虽然它的危害性与SQL注入不相上下,但目前却很少为人所知。接下来,我将为读者详细展示这种攻击手法,以及相应的防御策略。 背景知识 最近,我遇到了一段有趣的代码,它尝试尽一切可能来保护数据库的访问安全,例如每当新用户进行注册时,将运行以下代码: <?php // Checking whether a user with the same username exists $username = mysql_real_escape_string($_GET[ 'username']); $ password = mysql_real_escape_string($_GET[ 'password']); $query = " SELECT * FROM users WHERE username= '$username'"; $res = mysql_query($query, $ database); if($res) { if(mysql_num_rows($res) > 0) { // User exists, exit gracefully . . } else { // If not, only then insert

SQL Server实用技巧一

♀尐吖头ヾ 提交于 2020-03-09 05:15:25
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select into b from a where 1<>1(仅用于SQlServer) 法二:select top 0 into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from a; select * into b from a 3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用) insert into b(a, b, c) select d,e,f from a in ‘具体数据库’ where 条件 例子:..from a in '"&Server.MapPath(".")&"\data.mdb" &"' where.. 4、说明:子查询(表名1:a 表名2:b) select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3) 5、说明:显示文章、提交人和最后回复时间 select a.title,a.username,b.adddate from table a,(select max(adddate)

SQL Server 实用技巧二

丶灬走出姿态 提交于 2020-03-09 05:13:52
1.sp_helptext是显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本。 2.SQL 查询某字段数据所在的表 select a.name as 表名 from sysobjects as a left join syscolumns as b on a.id=b.id where b.name='字段名' 1>根据已知字段查询表: select a.name from sysobjects a join syscolumns b on a.id=b.id where b.name='字段名' 2>查询符合此字段值的记录: select * from 表名 where 字段名=字段值 (表名是步骤一查询出来的名称) 3.获取当前数据库中的所有用户表 select Name from sysobjects where xtype='u' and status>=0 4.列出数据库里所有的表名 select name from sysobjects where type='U' 5.获取某一个表的所有字段 select name from syscolumns where id=object_id('表名') select name from syscolumns where id in (select id from sysobjects where type

Oracle的简单查询跟修改

 ̄綄美尐妖づ 提交于 2020-03-09 04:39:08
maven依赖 < dependency > < groupId > com . jslsolucoes < / groupId > < artifactId > ojdbc6 < / artifactId > < version > 11.2 .0 .1 .0 < / version > < / dependency > public class oracle { Connection connection = null ; PreparedStatement preparedStatement = null ; ResultSet resultSet = null ; @Test public void jdbc ( ) { try { //1.注册驱动 Class . forName ( "oracle.jdbc.driver.OracleDriver" ) ; //2.获取数据库连接 connection = DriverManager . getConnection ( "jdbc:oracle:thin:@//localhost:1521/ORCL" , "scott" , "123456" ) ; //3.创建Statement String sql = "select * from books" ; preparedStatement = connection .

在 sql server 中,不允许用户查看到所有数据库

妖精的绣舞 提交于 2020-03-09 03:51:58
在最新版本(14.0)的 sql server management studio 中,角色不能直接编辑,需要在服务器属性中进行修改 移除掉 public 查看任意数据库的权限,然后新建的用户就看不到其它数据库了,只给用户可以看的数据库权限即可。 取消 public 权限: DENY VIEW ANY DATABASE TO PUBLIC; 授权用户: ALTER AUTHORIZATION ON DATABASE::test_db TO test_user; 转自: https://www.cnblogs.com/yuanhang/p/5719323.html 来源: https://www.cnblogs.com/xwgli/p/12446495.html

关于SQL视图的创建和使用方法

旧巷老猫 提交于 2020-03-08 20:10:15
SQL视图的创建和使用 视图这个东西在其他的软件中,我们也经常看得到,例如word中就有视图,我们不难发现,视图似乎是一种显示方式,就像WORD一样,有几种显示版面,这就是视图,那么SQL中的视图又该怎么定义呢?今儿我要学习一下,做个笔记。这是在继 SQL数据库高级查询 和 子查询 之后的又一个重要内容。 1.什么是视图? 视图是一个虚拟的表,是一个表中的数据经过某种筛选后的显示方式,视图由一个预定义的查询select语句组成。 2.视图的特点。 视图中的数据并不属于视图本身,而是属于基本的表,对视图可以像表一样进行insert,update,delete操作。 视图不能被修改,表修改或者删除后应该删除视图再重建。 视图的数量没有限制,但是命名不能和视图以及表重复,具有唯一性。 视图可以被嵌套,一个视图中可以嵌套另一个视图。 视图不能索引,不能有相关联的触发器和默认值,sql server不能在视图后使用order by排序。 举例:查询“心理学”考试成绩大于80的学生的“学号”、“姓名”、“所属院系”。 Student(学号,姓名,性别,所属院系) Course(课号,课名,学分) Score(学号,课号,考试成绩,平时成绩) 这需要通过联合查询来解决问题了,参数不足,只得如此,来写一条语句试试: Select st.学号,st.姓名,st.所属院系 from student

SQL Server 2012 LocalDB 管理之旅

一世执手 提交于 2020-03-08 20:06:46
SQL Server LocalDB能够最大限度地节省您的数据库管理精力,以便开发人员可以专注于开发数据库应用。 使用SqlLocalDB命令行管理LocalDB 为了方便管理,LocalDB提供了一个基于命令行的数据库管理工具SqlLocalDB.exe。下面是SqlLocalDB.exe的路径: %ProgramFiles%\Microsoft SQL Server\110\Tools\Binn 我们可以在Windows操作系统的CMD命令行中运行SqlLocalDB.exe: Cd %ProgramFiles%\Microsoft SQL Server\110\Tools\Binn SqlLocalDB.exe /? 图1:SqlLocalDB -? SqlLocalDB以空格作为分隔符,因此,如果实例名中包含空格或其它特殊字符,我们引用的时候需要加引号。例如: SqlLocalDB create "My LocalDB Instance" 管理员或开发人员可以使用create选项创建LocalDB实例,使用-s选项,将会在实例创建之后启动实例。例如: SqlLocalDB create "MyLocalDB" 11.0 -s 可以使用如下命令查看MyLocalDB实例的状态信息: SqlLocalDB info "MyLocalDB" 该命令将返回如下信息: 图二

SQL Server 2012 Express LocalDB

↘锁芯ラ 提交于 2020-03-08 20:04:47
微软最新推出的 SQL Server 2012 Express LocalDB 是一种 SQL Server Express 的运行模式,特别适合用在开发环境使用,也内置在 Visual Studio 2012 之中。 关于 SQL Server 2012 Express LocalDB 的运作方式 在安装 LocalDB 时会复制一个 SQL Server Express 实例所需的最少文件,基本上 LocalDB 几乎等同于完整的 SQL Server Express 数据库引擎,且 LocalDB 方式启动的 SQL Server Database Engine 实例与 SQL Server Express 具有相同的限制 (因为跟 SQL Server Express 共享相同的文件),但 LocalDB 由于简化了管理,所以比 SQL Server Express 还多了一些限制,不过这些限制通常不影响开发。相对旧版的 SQL Server 2008 Express 来说,两者有些差异性,比较如下: SQL Server 2008 Express 安装 SQL Server 2008 Express 的过程时间花得比较久 通过 SQL Server 2008 Express 安装程序一次只能安装一个 SQL 实例 (Instance),若要安装更多实例则必须在运行一次

SQL Server 2012 Express LocalDB

允我心安 提交于 2020-03-08 20:03:03
微软最新推出的 SQL Server 2012 Express LocalDB 是一种 SQL Server Express 的运行模式,特别适合用在开发环境使用,也内置在 Visual Studio 2012 之中。 关于 SQL Server 2012 Express LocalDB 的运作方式 在安装 LocalDB 时会复制一个 SQL Server Express 实例所需的最少文件,基本上 LocalDB 几乎等同于完整的 SQL Server Express 数据库引擎,且 LocalDB 方式启动的 SQL Server Database Engine 实例与 SQL Server Express 具有相同的限制 (因为跟 SQL Server Express 共享相同的文件),但 LocalDB 由于简化了管理,所以比 SQL Server Express 还多了一些限制,不过这些限制通常不影响开发。相对旧版的 SQL Server 2008 Express 来说,两者有些差异性,比较如下: SQL Server 2008 Express 安装 SQL Server 2008 Express 的过程时间花得比较久 通过 SQL Server 2008 Express 安装程序一次只能安装一个 SQL 实例 (Instance),若要安装更多实例则必须在运行一次

SQL Server 中 SELECT INTO 和 INSERT INTO SELECT语句的区别

对着背影说爱祢 提交于 2020-03-08 19:55:23
SQL Server 中 SELECT INTO 和 INSERT INTO SELECT语句的区别 我们在写存储过程的时候经常会遇到需要将查询到的数据存到一张表里面的情况,如将一个 table1的数据的部分字段复制到 table2中,或者将整个 table1复制到 table2中,这时候我们就要使用 SELECT INTO 和 INSERT INTO SELECT 表复制语句了。 1.INSERT INTO SELECT 语句 语法:Insert into Table2(field1,field2,...) select value1,value2,... from Table1 或者:Insert into Table2 select * from Table1 注意:(1)目标表Table2必须存在,并且字段field,field2...也必须存在于Table2中 (2)注意Table2的主键约束,如果Table2有主键且不为空,则 field1, field2...中必须存在Table2的主键 (3)注意语法,不要加values,和插入一条数据的sql混了,不要写成: Insert into Table2(field1,field2,...) values (select value1,value2,... from Table1) 由于目标表Table2已经存在