中山大学实验3-SQL注入攻击实验

合集下载

SQL注入攻击实验报告

SQL注入攻击实验报告

实验报告(实验名称:SQL注入攻击)一、实验目的通过SQL注入攻击,掌握网站的工作机制,认识到SQL注入攻击的防范措施,加强对Web攻击的防范。

二、实验环境描述实验开展所基于的网络环境,给出网络拓扑、IP地址、web服务器、客户机等信息。

宿主机(客户机):操作系统为Windows 10,IP为192.168.18.11,在主机上安装虚拟化软件Vmware Player,在此基础上创建虚拟机并安装操作系统,进行网络配置,采用环回适配器,桥接模式,实现宿主机与虚拟机之间的网络通信,虚拟机(Web服务器):操作系统为Windows XP,IP为192.168.18.9,本实验利用windows 的iis 服务搭建了一个有SQL 注入漏洞的网站“ASP 新闻发布系统”,以该网站为目标,对其实施SQL 注入攻击。

本实验所需工具如下:IIS 是Internet Information Server 的缩写,是微软提供的Internet 服务器软件,包括Web、等服务器,也是目前常用的服务器软件。

版本不限。

“啊D”注入工具:对“MSSQL 显错模式”、“MSSQL 不显错模式”、“Access”等数据库都有很好的注入检测能力,内集“跨库查询”、“注入点扫描”、“管理入口检测”、“目录查看”等等于一身的注入工具包。

“ASP 新闻发布系统”Ok3w v4.6 源码。

三、实验内容(一)配置实验环境,首先选择网络适配器,安装环回适配器,在主机上安装Vmware Player,成功启动虚拟机。

接着配置宿主机和虚拟机的IP,如图要注意的是,配置主机上的IP时,应该选择VMnet8,并且注意勾取Bridge然后,验证宿主机和虚拟机是否联通,结果显示连接成功。

最后在虚拟机上安装IIS程序,打开浏览器,输入地址“127.0.0.1”,检查网站搭建情况。

成功!(二)寻找注入点在宿主机上,打开网页5,可以正常打开页面。

进行注入测试,键入 and 1=1,返回页面不变。

SQL注入攻击实验报告_林凯杰_200930601340

SQL注入攻击实验报告_林凯杰_200930601340

SQL注入攻击实验【实验要求】1)Sql注入攻击的实现与防御,其中防御模块为可选作部分。

2)要求:提交源代码和可执行文件,提供用户使用文档和实验报告文档(包括开发环境、运行主要截图、实验收获等说明)。

【实验原理】1、结构化查询语言(SQL)是一种用来和数据库交互的文本语言,SQL Injection就是利用某些数据库的外部接口把用户数据插入到实际的数据库操作语言当中,从而达到入侵数据库乃至操作系统的目的。

它的产生主要是由于程序对用户输入的数据没有进行细致的过滤,导致非法数据的导入查询。

2、SQL注入攻击主要是通过构建特殊的输入,这些输入往往是SQL语法中的一些组合,这些输入将作为参数传入Web应用程序,通过执行SQL语句而执行入侵者的想要的操作,一般想要攻击成功,需要做到以下三点:1)确定Web应用程序所使用的技术:注射式攻击对程序设计语言或者硬件关系密切,但是这些可以通过适当的踩点或者索性将所有常见的注射式攻击都搬出来逐个试一下就知道了。

为了确定所采用的技术,攻击者可以考察Web页面的页脚,查看错误页面,检查页面源代码,或者使用诸如Nessus等工具来进行刺探。

2)确定所有可能的输入方式:Web应用的用户输入方式比较多,其中一些用户输入方式是很明显的,如HTML表单;另外,攻击者可以通过隐藏的HTML表单输入、HTTP头部、cookies、甚至对用户不可见的后端AJAX请求来跟Web应用进行交互。

一般来说,所有HTTP的GET和POST都应当作用户输入。

为了找出一个Web 应用所有可能的用户输入,我们可以求助于Web代理,如Burp等。

3)查找可以用于注射的用户输入:在找出所有用户输入方式后,就要对这些输入方式进行筛选,找出其中可以注入命令的那些输入方式。

这个任务好像有点难,但是这里有一个小窍门,那就是多多留意Web应用的错误页面,很多时候您能从这里得到意想不到的收获。

3、SQL注入攻击的特点。

sql注入攻击教程

sql注入攻击教程

sql注入攻击教程SQL注入是一种常见的网络攻击技术,它利用了应用程序中的安全漏洞,从而使攻击者可以执行恶意的SQL查询。

当应用程序没有正确过滤和验证用户输入时,攻击者可以通过注入恶意的SQL代码来修改、删除或泄露数据库中的数据。

SQL注入攻击的目的是绕过应用程序的验证和安全机制,通过修改SQL查询语句来获取未被授权的信息。

注入攻击通常发生在应用程序与数据库之间的交互过程中,攻击者可以在用户输入中插入特定的SQL语句,使应用程序误将其视为合法的请求。

一个常见的SQL注入攻击的示例是通过在登录界面的用户名和密码字段中插入恶意代码来绕过身份验证。

如果应用程序没有对输入数据进行适当的过滤和验证,攻击者可以输入' OR'1'='1作为用户名和密码,从而绕过身份验证并获取未被授权的访问权限。

为了防范SQL注入攻击,开发人员应该采取以下措施:1. 使用参数化查询或预编译语句:通过使用参数化查询或预编译语句,可以将用户输入的数据作为参数传递给SQL查询语句,而不是将其直接拼接到SQL语句中。

这样可以有效地防止注入攻击。

2. 对输入数据进行验证和过滤:开发人员应该对用户输入的数据进行验证和过滤,只接受符合特定格式和规则的数据。

例如,可以使用正则表达式来验证邮箱地址、密码的长度和复杂度等。

3. 实施最小权限原则:在数据库中创建一个有限的、仅具有必要权限的用户账户,以降低攻击者成功进行注入攻击的风险。

4. 对日志进行监控和审计:应该监控应用程序的日志,及时发现并记录异常请求和潜在的注入攻击,以便能够及时采取应对措施。

总之,SQL注入攻击是一种十分危险和普遍的网络攻击技术。

开发人员应该时刻关注和加强应用程序的安全性,通过采取适当的措施来防范和抵御SQL注入攻击。

只有提高用户输入数据的过滤和验证,以及实施最小权限原则等安全措施,我们才能保护数据库中的敏感信息免受攻击者的侵害。

sql注入攻击实训总结

sql注入攻击实训总结

sql注入攻击实训总结
SQL注入攻击是一种通过在Web应用程序的输入数据中添加恶意的SQL查询语句来执行未经授权的查询或操作的攻击方式。

以下是SQL注入攻击实训的总结:
1. 熟悉Web应用程序的漏洞和攻击方式:在实训中,学生需要熟悉Web应用程序中的漏洞和攻击方式,包括输入参数的过滤和验证、SQL注入、XSS攻击等。

2. 选择合适的攻击场景:在实训中,学生需要选择不同的攻击场景,例如通过输入参数注入恶意SQL语句、通过文件上传漏洞注入恶意SQL语句等。

3. 设计SQL注入攻击方案:在实训中,学生需要根据选择的漏洞和攻击场景,设计SQL注入攻击方案,包括SQL语句的设计、参数的填充和验证等。

4. 实现SQL注入攻击:在实训中,学生需要使用Python等编程语言实现SQL注入攻击,包括输入参数的过滤和验证、SQL语句的拼接和填充等。

5. 验证和调试攻击效果:在实训中,学生需要对攻击效果进行验证和调试,包括检查攻击是否成功、检查攻击语句是否包含恶意参数等。

6. 学习安全知识:在实训中,学生需要学习安全知识,包括Web 应用程序的安全设计原则、安全编码规范、访问控制等。

7. 实践项目:在实训中,学生需要实践项目,将所学知识和技能
应用到实际攻击场景中,提高自己的实战能力和水平。

SQL注入攻击实训是一个复杂的任务,需要学生具备扎实的编程和Web应用程序知识,同时也需要具备一定的安全意识和应变能力。

在实训中,学生需要不断探索和实践,不断完善自己的攻击方案和安全措施,提高自己的安全水平。

SQL注入攻击实验报告

SQL注入攻击实验报告

SQL注入攻击实验报告一、实验背景和目的:二、实验过程与结果:1.实验环境本实验使用的是Web应用程序开发框架为PHP和MySQL数据库,实验环境为Windows Server 2024操作系统。

2.实验步骤步骤一:创建数据库首先,创建一个名为“db_demo”的数据库,并在该数据库中创建一个名为“user”的数据表,包含id、name和password三个字段。

步骤二:编写Web应用程序使用PHP编写一个简单的Web应用程序,实现用户登录功能。

在用户登录代码中,从前端获取用户输入的用户名和密码,并通过SQL语句查询数据库中是否有匹配的用户记录。

步骤三:测试登录功能启动Web服务器,使用浏览器打开Web应用程序的登录页面。

尝试使用正确的用户名和密码进行登录,验证登录功能是否正常。

步骤四:进行SQL注入攻击在登录页面的用户名和密码输入框中,输入以下恶意SQL代码进行注入攻击尝试:'OR'1'='1'--3.实验结果通过进行SQL注入攻击后,我们得到了与原始用户名和密码验证逻辑相同的结果,成功绕过了登录验证,进入了系统。

三、实验分析与总结:1.实验分析攻击者通过插入特定的SQL代码,成功绕过了原本的验证逻辑,执行了未经授权的数据库操作。

这种攻击可以导致用户信息被窃取、数据库数据遭到篡改甚至服务器被远程控制。

2.实验总结为了防止SQL注入攻击,我们可以采取一些有效的防护措施:(1)输入验证与过滤:开发人员应该对用户输入的数据进行合法性验证和过滤,避免将用户输入直接拼接到SQL语句中。

(2)参数化查询:使用参数化查询语句,将用户输入的数据作为参数传递给SQL语句,而不是直接拼接到SQL语句中。

(3)最小权限原则:数据库账户应该具有最小的权限,只能访问必要的数据表和字段。

(4)使用ORM框架:使用ORM框架可以避免手动编写SQL语句,减少了SQL注入的风险。

通过本次实验,我们对SQL注入攻击的危害和防护机制有了更深入的了解。

sql注入实验报告

sql注入实验报告

sql注入实验报告SQL注入实验报告引言:SQL注入是一种常见的Web应用程序漏洞,攻击者通过构造恶意的SQL查询语句,成功地绕过应用程序的身份验证和授权机制,从而获取未经授权的数据或者对数据库进行非法操作。

本实验旨在通过模拟SQL注入攻击的过程,深入了解其原理和危害,并探讨相应的防御措施。

一、实验背景在当今信息化社会中,Web应用程序的安全性备受关注。

然而,由于编程人员对于安全性的重视程度不够,很多应用程序存在SQL注入漏洞,给系统的安全性带来了巨大威胁。

因此,深入研究SQL注入攻击和防御措施具有重要意义。

二、实验目的1. 了解SQL注入攻击的原理和过程;2. 掌握SQL注入攻击的常见手法;3. 分析SQL注入攻击的危害和可能造成的后果;4. 探讨SQL注入防御的方法和技术。

三、实验过程1. 实验环境搭建在本实验中,我们使用了一款常见的Web应用程序演示平台,如DVWA (Damn Vulnerable Web Application)。

该平台提供了多种漏洞类型,包括SQL 注入。

通过在虚拟机中搭建DVWA环境,我们可以模拟真实的SQL注入攻击场景。

2. SQL注入攻击实验通过DVWA平台提供的漏洞,我们可以进行SQL注入攻击实验。

首先,我们选择一个目标页面,如登录页面,然后使用常见的SQL注入手法,如' OR '1'='1,尝试绕过身份验证机制。

如果成功登录,即表示注入攻击成功。

3. 分析攻击原理和过程在实验过程中,我们可以通过查看DVWA平台的源代码,了解SQL注入攻击的原理和过程。

攻击者通过构造特定的输入,使得应用程序在处理SQL查询语句时出现漏洞,从而导致注入攻击的成功。

四、实验结果与分析在实验中,我们成功地进行了SQL注入攻击,并绕过了登录页面的身份验证机制。

这表明该应用程序存在SQL注入漏洞,攻击者可以通过注入恶意的SQL语句,获取到未经授权的数据。

SQL注入攻击实验报告

SQL注入攻击实验报告

实验报告(实验名称:SQL注入攻击)一、实验目的通过SQL注入攻击,掌握的工作机制,认识到SQL注入攻击的防措施,加强对Web攻击的防。

二、实验环境描述实验开展所基于的网络环境,给出网络拓扑、IP地址、web服务器、客户机等信息。

宿主机(客户机):操作系统为Windows 10,IP为192.168.18.11,在主机上安装虚拟化软件Vmware Player,在此基础上创建虚拟机并安装操作系统,进行网络配置,采用环回适配器,桥接模式,实现宿主机与虚拟机之间的网络通信,虚拟机(Web服务器):操作系统为Windows XP,IP为192.168.18.9,本实验利用windows 的iis 服务搭建了一个有SQL 注入漏洞的“ASP 新闻发布系统”,以该为目标,对其实施SQL 注入攻击。

本实验所需工具如下:IIS 是Internet Information Server 的缩写,是微软提供的Internet 服务器软件,包括Web、FTP、Mail 等服务器,也是目前常用的服务器软件。

版本不限。

“啊D”注入工具:对“MSSQL 显错模式”、“MSSQL 不显错模式”、“Access”等数据库都有很好的注入检测能力,集“跨库查询”、“注入点扫描”、“管理入口检测”、“目录查看”等等于一身的注入工具包。

“ASP 新闻发布系统”Ok3w v4.6 源码。

三、实验容(一)配置实验环境,首先选择网络适配器,安装环回适配器,在主机上安装Vmware Player,成功启动虚拟机。

接着配置宿主机和虚拟机的IP,如图要注意的是,配置主机上的IP时,应该选择VMnet8,并且注意勾取Bridge然后,验证宿主机和虚拟机是否联通,结果显示连接成功。

最后在虚拟机上安装IIS程序,打开浏览器,输入地址“127.0.0.1”,检查搭建情况。

成功!(二)寻找注入点在宿主机上,打开网页192.168.18.9/list.asp?id=95,可以正常打开页面。

SQL注入攻击实验报告

SQL注入攻击实验报告

SQL注入攻击实验报告实验目的本实验的目的是向读者介绍SQL注入攻击的原理和实现方法,并通过实验来展示SQL注入攻击的危害性。

实验环境•操作系统:Windows 10•数据库软件:MySQL 8.0.23•开发环境:Visual Studio Code实验原理SQL注入攻击是一种常见的网络攻击方式。

它利用了应用程序中对用户输入数据的不充分验证,将恶意的SQL语句注入到应用程序中执行,从而绕过应用程序的身份验证、授权等安全机制,并在数据库中执行非法的操作。

SQL注入攻击通常分为以下几种类型:•数字型注入:这是最常见的注入方式,攻击者通过在应用程序中提交带有恶意参数的URL或表单来进行攻击。

•字符型注入:这种类型的攻击需要重点注意,因为它可以绕过应用程序中的字符过滤器和转义字符。

•布尔型注入:当应用程序使用布尔型参数来查询数据库时,攻击者可以通过提交不同的值来改变查询结果。

•时间型注入:这种类型的攻击是一种延迟攻击,攻击者可以通过提交恶意请求来使服务器在一段时间后崩溃。

实验步骤本实验将以一个简单的示例来介绍SQL注入攻击的实现过程。

步骤1:创建数据库我们首先需要在MySQL数据库中创建一个名为“user”的数据库,并在该数据库中创建一个名为“userinfo”的表,该表包含以下字段:CREATE DATABASE user;USE user;CREATE TABLE userinfo (id INT NOT NULL AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age INT NOT NULL,password VARCHAR(50) NOT NULL,PRIMARY KEY (id));步骤2:创建应用程序接下来,我们需要使用Visual Studio Code创建一个新的Web应用程序。

首先创建一个名为“index.html”的文件,用于显示用户登录页面。

该页面包含以下代码:```html <!DOCTYPE html>title>Loginform action=。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.实验报告如有雷同,雷同各方当次实验成绩均以0分计。

2.当次小组成员成绩只计学号、姓名登录在下表中的。

警示3.在规定时间内未上交实验报告的,不得以其他方式补交,当次成绩按0分计。

4.实验报告文件以PDF格式提交。

院系班级组长学号学生实验分工SQL注入攻击实验【实验目的】了解SQL注入攻击的过程。

通过SQL注入攻击,掌握网站的工作机制,认识到SQL注入攻击的危害,加强对Web攻击的防范。

禁止恶意入侵,不可对他人网站造成不良影响。

建议自行搭建简易网站进行实验。

【实验原理】结构化查询语言SQL是一种用来和数据库交互的文本语言,SQL注入就是利用某些数据库的外部接口把用户数据插入到实际的数据库操作语言当中,从而达到入侵数据库乃至操作系统的目的。

它的产生主要是由于程序对用户输入的数据没有进行细致的过滤,导致非法数据的导入查询。

在下面的攻击实验中,需要用到wed.exe和wis.exe两个命令行工具(从网络上下载),其中wis.exe 用于扫描某个站点中是否存在SQL注入漏洞;wed.exe是用于破解SQL注入用户名和密码。

将两个工具结合起来,就可以体验从寻找注入点到注入攻击完成的整个过程。

【实验过程】(给出实验使用的真实网址,测试需要贴出适当的截图)(1)判断环境,寻找注入点使用wis.exe寻找注入漏洞,其使用格式:wis 网址例如,检测某个网址/,首先进入命令提示窗口,然后输入命令:wis /命令输入结束后,单击回车键,即可开始扫描。

注意命令格式,在输入网址时,网址需放在http://和/之间,否则扫描无法进行。

你找到有SQL注入漏洞的网站是:(2)查看SQL注入攻击漏洞扫描结束后,可以看到网站上有否存在SQL注入攻击漏洞。

漏洞信息一般以红色字体显示,以“SQL Injection Format”开头的那些行。

假设扫描后其中某行如下:SQL Injection Format:/xygk.asp?typeid=34&bigclassid=98这是特征明显的数据库查询语句,可以选择其来做破解用户名和密码实验。

如果要将其网页打开,可在浏览器地址栏中输入完整网址/xygk. asp?typeid=34&bigclassid=98。

你的扫描结果是:/rjz/sort.asp?classid=1/dyz/sort.asp?classid=1/dyz/list.asp?id=2705其中的漏洞信息是:在地址栏中输入“/rjz/sort.asp?classid=1”,打开了网站页面,是一个下载网页。

(3)SQL注入破解管理员账号使用wed.exe破解管理员账号,其使用格式:wed 网址进入命令提示窗口,输入命令:wed /xygk.asp?typeid=34&bigclassid=98asp?回车后查看运行情况。

注意输入网址时,最后面不要加上符号/,但前面的的http://不可缺。

该程序在运行时,使用了用来破解用户数据库中的字表名、用户名和用户密码所需的字典文件。

如TableName.dic、UserField.dic和PassField.dic。

在破解过程中还可以看到“SQL Injection Detected.”的字符串字样,表示程序还会对需要注入破解的网站进行检测,以确定是否存在SQL注入漏洞,成功后才开始猜测用户名。

如果检测成功,很快就获得了数据库表名,例如是“admin”;然后得到用户表名和字长,例如为“username”和“6”;再检测到密码表名和字长,例如为“password”和“8”。

系统继续执行,wed.exe程序开始用户名和密码的破解,最终获得了用户名和密码。

你的破解结果是:获得了数据库表名“admin”,然后得到用户表名和字长,为“username”和“6”;再检测到密码表名和字长,为“password”和“8”随后得到了用户名和密码了——“admina”、“pbk&7*8r”如果不通破解,说明原因是:输入网址时,最后面加上了那个“/”,或者前面的“http://”头也少了。

(4)搜索隐藏的管理登录页面重新回到(1)打开的网站页面中,用已经检测到的管理员的帐号和密码,进入管理登录页面,但当前的页面中还没有管理员的入口链接。

再次使用wis.exe程序,该程序除了可以扫描出网站中存在的所有SQL注入点外,还可以找到隐藏的管理员登录页面。

在命令行窗口中输入:wis /xygk.asp?typeid=34&bigclassid=98/a注意行末输入了一个参数“/a”。

如果出现扫描不成功,可以认为管理员登录页面只可能隐藏在整个网站的某个路径下。

于是输入“wis /a”,对整个网站的登录页面进行扫描。

注意扫描语句中网址的格式。

在扫描过程中,如找到的隐藏登录页面会在屏幕上以红色字体进行显示。

扫描结束后,结果以列表形式显示在命令窗口中。

一般可以看到列表中有多个以“/rsc/”开头的管理员登录页面网址,例如“/rsc/gl/manage.asp”、“/rsc/gl/login.asp” 、“/rsc/gl/admin1.asp” 等。

任意选择一个网址,比如在浏览器中输入网址“/ rsc/gl/admin1.asp”,就会出现本来隐藏着的管理员登录页面。

输入用户名和密码,就可以进入到后台管理系统。

你搜索隐藏到的管理登录页面是:/rjz/gl/admin1.asp如果搜索不到,说明原因是:当前在扫描注入点,肯定就不能成功了,管理员登录页面只可能隐藏在整个网站的某个路径下。

所以可以输入“wis.exe / /a”,对整个网站进行扫描。

注意扫描语句中网址的格式。

程序开始对网站中的登录页面进行扫描,在扫描过程中,找到的隐藏登录页面会在屏幕上以红色进行显示。

很快就查找完了,在最后以列表显示在命令窗口中。

可以看到列表中有多个以“/rjz/”开头的登录页面网址,包括“/rjz/gl/manage.asp”、“/rjz/gl/login.asp”、“/rjz/gl/admin1.asp”等。

【实验思考】防御SQL注入攻击的有效方法如下:1、普通用户与系统管理员用户的权限要有严格的区分。

如果一个普通用户在使用查询语句中嵌入另一个Drop Table语句,那么是否允许执行呢?由于Drop语句关系到数据库的基本对象,故要操作这个语句用户必须有相关的权限。

在权限设计中,对于终端用户,即应用软件的使用者,没有必要给他们数据库对象的建立、删除等权限。

那么即使在他们使用SQL语句中带有嵌入式的恶意代码,由于其用户权限的限制,这些代码也将无法被执行。

故应用程序在设计的时候,最好把系统管理员的用户与普通用户区分开来。

如此可以最大限度的减少注入式攻击对数据库带来的危害。

2、强迫使用参数化语句。

如果在编写SQL语句的时候,用户输入的变量不是直接嵌入到SQL语句。

而是通过参数来传递这个变量的话,那么就可以有效的防治SQL注入式攻击。

也就是说,用户的输入绝对不能够直接被嵌入到SQL语句中。

与此相反,用户的输入的内容必须进行过滤,或者使用参数化的语句来传递用户输入的变量。

参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。

采用这种措施,可以杜绝大部分的SQL注入式攻击。

不过可惜的是,现在支持参数化语句的数据库引擎并不多。

不过数据库工程师在开发产品的时候要尽量采用参数化语句。

3、加强对用户输入的验证。

总体来说,防治SQL注入式攻击可以采用两种方法,一是加强对用户输入内容的检查与验证;二是强迫使用参数化语句来传递用户输入的内容。

在SQLServer数据库中,有比较多的用户输入内容验证工具,可以帮助管理员来对付SQL注入式攻击。

测试字符串变量的内容,只接受所需的值。

拒绝包含二进制数据、转义序列和注释字符的输入内容。

这有助于防止脚本注入,防止某些缓冲区溢出攻击。

测试用户输入内容的大小和数据类型,强制执行适当的限制与转换。

这即有助于防止有意造成的缓冲区溢出,对于防治注入式攻击有比较明显的效果。

如可以使用存储过程来验证用户的输入。

利用存储过程可以实现对用户输入变量的过滤,如拒绝一些特殊的符号。

如以上那个恶意代码中,只要存储过程把那个分号过滤掉,那么这个恶意代码也就没有用武之地了。

在执行SQL语句之前,可以通过数据库的存储过程,来拒绝接纳一些特殊的符号。

在不影响数据库应用的前提下,应该让数据库拒绝包含以下字符的输入。

如分号分隔符,它是SQL注入式攻击的主要帮凶。

如注释分隔符。

注释只有在数据设计的时候用的到。

一般用户的查询语句中没有必要注释的内容,故可以直接把他拒绝掉,通常情况下这么做不会发生意外损失。

把以上这些特殊符号拒绝掉,那么即使在SQL语句中嵌入了恶意代码,他们也将毫无作为。

故始终通过测试类型、长度、格式和范围来验证用户输入,过滤用户输入的内容。

这是防止SQL注入式攻击的常见并且行之有效的措施。

4、多多使用SQL Server数据库自带的安全参数。

为了减少注入式攻击对于SQL Server数据库的不良影响,在SQLServer数据库专门设计了相对安全的SQL参数。

在数据库设计过程中,工程师要尽量采用这些参数来杜绝恶意的SQL注入式攻击。

如在SQL Server数据库中提供了Parameters集合。

这个集合提供了类型检查和长度验证的功能。

如果管理员采用了Parameters这个集合的话,则用户输入的内容将被视为字符值而不是可执行代码。

即使用户输入的内容中含有可执行代码,则数据库也会过滤掉。

因为此时数据库只把它当作普通的字符来处理。

使用Parameters集合的另外一个优点是可以强制执行类型和长度检查,范围以外的值将触发异常。

如果用户输入的值不符合指定的类型与长度约束,就会发生异常,并报告给管理员。

如上面这个案例中,如果员工编号定义的数据类型为字符串型,长度为10个字符。

而用户输入的内容虽然也是字符类型的数据,但是其长度达到了20个字符。

则此时就会引发异常,因为用户输入的内容长度超过了数据库字段长度的限制。

5、多层环境如何防治SQL注入式攻击?在多层应用环境中,用户输入的所有数据都应该在验证之后才能被允许进入到可信区域。

未通过验证过程的数据应被数据库拒绝,并向上一层返回一个错误信息。

实现多层验证。

对无目的的恶意用户采取的预防措施,对坚定的攻击者可能无效。

更好的做法是在用户界面和所有跨信任边界的后续点上验证输入。

如在客户端应用程序中验证数据可以防止简单的脚本注入。

但是,如果下一层认为其输入已通过验证,则任何可以绕过客户端的恶意用户就可以不受限制地访问系统。

故对于多层应用环境,在防止注入式攻击的时候,需要各层一起努力,在客户端与数据库端都要采用相应的措施来防治SQL语句的注入式攻击。

相关文档
最新文档