SQL注入式攻击是利用是指利用设计上的漏洞,在目标服务器上运行Sql命令以及进行其他方式的攻击
动态生成Sql命令时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因。
比如:
如果你的查询语句是select * from admin where username='"&user&"' and password='"&pwd&"'"
那么,如果我的用户名是:1' or '1'='1
那么,你的查询语句将会变成:
select * from admin where username='1 or '1'='1' and password='"&pwd&"'"
这样你的查询语句就通过了,从而就可以进入你的管理界面。
所以防范的时候需要对用户的输入进行检查。特别式一些特殊字符,比如单引号,双引号,分号,逗号,冒号,连接号等进行转换或者过滤。
需要过滤的特殊字符及字符串有:
net user
xp_cmdshell
/add
exec master.dbo.xp_cmdshell
net localgroup administrators
select
count
Asc
char
mid
'
:
"
insert
delete from
drop table
update
truncate
from
%
下面是我写的两种关于解决注入式攻击的防范代码,供大家学习参考!
js版的防范SQL注入式攻击代码~:
[CODE START]
<script language="javascript">
<!--
var url = location.search;
var re=/^\?(.*)(select%20|insert%20|delete%20from%20|count\(|drop%20table|update%20truncate%20|asc\(|mid\(|char\(|xp_cmdshell|exec%20master|net%20localgroup%20administrators|\"|:|net%20user|\'|%20or%20)(.*)$/gi;
var e = re.test(url);
if(e) {
alert("地址中含有非法字符~");
location.href="error.asp";
}
//-->
<script>
[CODE END]
asp版的防范SQL注入式攻击代码~:
[CODE START]
<%
On Error Resume Next
Dim strTemp
If LCase(Request.ServerVariables("HTTPS")) = "off" Then
strTemp = "http://"
Else
strTemp = "https://"
End If
strTemp = strTemp & Request.ServerVariables("SERVER_NAME")
If Request.ServerVariables("SERVER_PORT") <> 80 Then strTemp = strTemp & ":" & Request.ServerVariables("SERVER_PORT")
strTemp = strTemp & Request.ServerVariables("URL")
If Trim(Request.QueryString) <> "" Then strTemp = strTemp & "?" & Trim(Request.QueryString)
strTemp = LCase(strTemp)
If Instr(strTemp,"select%20") or Instr(strTemp,"insert%20") or Instr(strTemp,"delete%20from") or Instr(strTemp,"count(") or Instr(strTemp,"drop%20table") or Instr(strTemp,"update%20") or Instr(strTemp,"truncate%20") or Instr(strTemp,"asc(") or Instr(strTemp,"mid(") or Instr(strTemp,"char(") or Instr(strTemp,"xp_cmdshell") or Instr(strTemp,"exec%20master") or Instr(strTemp,"net%20localgroup%20administrators") or Instr(strTemp,":") or Instr(strTemp,"net%20user") or Instr(strTemp,"'") or Instr(strTemp,"%20or%20") then
Response.Write "<script language='javascript'>"
Response.Write "alert('非法地址!!');"
Response.Write "location.href='error.asp';"
Response.Write "<script>"
End If
%>
[CODE END]
C# 检查字符串,防SQL注入攻击
这个例子里暂定为=号和'号
bool CheckParams(params object[] args)
{
string[] Lawlesses={"=","'"};
if(Lawlesses==null||Lawlesses.Length<=0)return true;
//构造正则表达式,例:Lawlesses是=号和'号,则正则表达式为 .*[=}'].* (正则表达式相关内容请见MSDN)
//另外,由于我是想做通用而且容易修改的函数,所以多了一步由字符数组到正则表达式,实际使用中,直接写正则表达式亦可;
string str_Regex=".*[";
for(int i=0;i< Lawlesses.Length-1;i++)
str_Regex+=Lawlesses[i]+"|";
str_Regex+=Lawlesses[Lawlesses.Length-1]+"].*";
//
foreach(object arg in args)
{
if(arg is string)//如果是字符串,直接检查
{
if(Regex.Matches(arg.ToString(),str_Regex).Count>0)
return false;
}
else if(arg is ICollection)//如果是一个集合,则检查集合内元素是否字符串,是字符串,就进行检查
{
foreach(object obj in (ICollection)arg)
{
if(obj is string)
{
if(Regex.Matches(obj.ToString(),str_Regex).Count>0)
return false;
}
}
}
}
return true;
分享到:
相关推荐
所用语言有:Div+Css , Sql 2000 , C# , ASP.net 1.使用是类库,这样一来使得本系统相对来说安全一点; 2.用户注册使用了非中文用户名注册的验证,这样就避免了编码错误等让用户感到无助的后果; 3.弹出对话框...
一篇有关SQL注入和跨站点脚本的文章,其中包含C#中的示例代码。
安全支持:过滤器、Sql注入、请求伪造 服务端验证:实体模型验证、自己封装Validator 缓存框架:微软自带Cache、Redis 日志管理:Log4net、登录日志、操作日志 工具类:NPOI、Newtonsoft.Json、验证码
最详细的SQL注入相关的命令整理 Oracle Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle数据库字典介绍 0RACLE的字段类型 事务 CMT DEMO(容器管理事务演示) 事务隔离性的...
3. 实现了多种安全机制,如防止SQL注入、XSS攻击等,确保系统的安全性。 4. 提供了详细的文档和注释,方便其他开发者理解和二次开发。 本资源不仅包含了完整的源代码,还附带了一篇详细的论文,阐述了项目的背景、...
2. 安全性高:采用了多种安全措施,如防止SQL注入、XSS攻击等,确保系统的稳定性和数据的安全性。 3. 易于扩展和维护:系统采用模块化设计,各模块之间相对独立,方便后续的扩展和维护工作。 4. 可定制性强:系统...
项目共包含440个文件,其中DLL动态链接库文件dll 248个,C#源代码文件cs 42个,MAP映射文件map 23个,CSS样式文件css 21个,JSON配置文件json 19个,缓存文件cache 17个,JavaScript源代码文件js 15个,PDB调试文件...
SQL注入 LFI / RFI XSS 文件遍历 文件上传 XML注入 JSON注入 命令注入 LDAP注入 PHP Python Node.js 去 ASP经典版 :check_mark: :check_mark: ASP.NET :check_mark: Java JavaScript Ruby Ruby ...
这是本人在大二苦学了一个月所做的,基本功能都实现了,前后台还是做得挺不错,有用到SQL防注入,cookie记录用户状态,Javascript特效,修改下即可使用,数据库用的是sql server 2008,是本人进大学第一个相对完整的...
09、支持对用户输入内容进行服务器端与客户端JS双重验证,有效防止SQL注入 ★ 10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的...
7.3.6 SQL注入攻击 7.3.7 使用参数化命令 7.3.8 调用存储过程 7.4 事务 7.4.1 事务和ASP.NET应用程序 7.4.2 隔离级别 7.4.3 保存点 7.5 提供程序无关的代码 7.5.1 创建工厂 7.5.2 用工厂创建...
6 采用sql过滤,Js过滤,防止sql注入. 7 Cookie采用随机加密技术,让用户信息更安全. 8 采用Ajax技术,大幅提高用户感受. ########运行环境###################################################################...
6 采用sql过滤,Js过滤,防止sql注入. 7 Cookie采用随机加密技术,让用户信息更安全. 8 采用Ajax技术,大幅提高用户感受. 9 支持Url转发,提高SEO. -----------系统结构------------------------------------- ...
安全支持:过滤器、Sql注入、请求伪造 服务端验证:实体模型验证、自己封装Validator 缓存框架:微软自带Cache、Redis 日志管理:Log4net、登录日志、操作日志 工具类:NPOI、Newtonsoft.Json、验证码、丰富公共...
FlooringMastery-C#Mastery项目的核心功能:允许用户创建,检索,更新和删除客户订单。 订单成本是根据客户所在州的人工成本,材料和税率计算的(后两者存储在文本文件中)。 订单会根据日期保存在单独的文本文件...
09、支持对用户输入内容进行服务器端与客户端JS双重验证,有效防止SQL注入 ★ 10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的...
ADO.Net(行集、数据集、类型化数据集、SQLHelper、SQL注入漏洞防范、数据绑定)。 3、三层架构MIS项目(5天) 查看项目演示 功能点 本项目基于流行的三层架构(DAL+BLL+UI)。 主要功能点:高安全性的用户管理体系...