防范SQL注入的几种方法 3

简介:

对于一些整机使用的站点来说防止通过80端口攻击而直接拿到整机管理权限,这一点就变得至关重要了。对xp_cmdshell 的过滤就成为首要,很多站点的程序都是用GET或者是GETPOST混合来提交数据的,对于此,我们给出一种防止GET进行SQL注入的程序:如程序体(5



fqys=request.servervariables("query_string") 

dim nothis(18) 

nothis(0)="net user" 

nothis(1)="xp_cmdshell" 

nothis(2)="/add" 

nothis(3)="exec%20master.dbo.xp_cmdshell" 

nothis(4)="net localgroup administrators" 

nothis(5)="select" 

nothis(6)="count" 

nothis(7)="asc" 

nothis(8)="char" 


nothis(9)="mid" 

nothis(10)="'" 

nothis(11)=":" 

nothis(12)="""" 

nothis(13)="insert" 

nothis(14)="delete" 

nothis(15)="drop" 

nothis(16)="truncate" 

nothis(17)="from" 

nothis(18)="%" 

errc=false 

for i= 0 to ubound(nothis) 

if instr(FQYs,nothis(i))<>0 then 

errc=true 

end if 

next 

if errc then 

response.write "<script language=""java script"">" 

response.write "parent.alert('
很抱歉!你正在试图攻击本服务器或者想取得本服务器最高管理权!将直接转向首页..');" 

response.write "self.location.href="http://blog.77169.com/default.asp";" 

response.write "</script>" 

response.end 

end if 


程序体(5 

我要做点声明的是:以上的程序只是对GET方式提交的数据进行的过滤,千万不要盲目套用。

像其他一些来自 ASP request 对象 (RequesRequest.QueryStringRequest.FormRequest.Cookies Request.ServerVariables) 的用户输入的攻击方法的方法,大致都集中在脚本期望的输入变量是数字变量 (ID) 上,当然我们不能只看数字变量,比如:


[url]http://127.0.0.1/systembbs/showtopic.asp?tid=99& ... and left[/url](userpasswor 

d,1)='a 

[url]http://127.0.0.1/systembbs/addtopic.asp?tid=99&a ... sp;and userpasswor [/url]

d=’or’’=’ 


另外,如何单一的防止类似这样的注入错误?


[url]http://127.0.0.1/systembbs/addtopic.asp?tid=99[/url]’ ;delete forum_forum;--&page=33 


防范程序程序体(6)

……addtopic.asp?action=add…… 

……addtopic.asp?action=delect…… 


Action1=trim(Request.QueryString())
if left(action1,7)<>"action=" then '
限定querystring必须为 action=
error(err01)'
错误处理
else
action=Request.querystring("action")'
取得querystring的值
end if
select case action'
querystring进行处理
case "add"
.....
case "delete"
......
case else '
如果querystring没有这个值则进行错误处理
error(err02)
end select 


程序体(6) 


出现这样的攻击,使我们的站长们不得不又再次头痛,这里我可以给出大家一个解决最好办法,一般的来说,用户名长度字符数不会超过15个字符,大都为14字符。那么我们从长度出发,来进行过滤:如程序体(7


Name=replace(name,”’”,””) 

If len(name)>16 then 

Response.write “ 
你要做什么?” 

Response.end 

End if 


程序体(7 

为什么我们这里以及过滤了单引号,怎么还要再次取一个长度限制呢?不多说了,看看4ngel的文章先<<饶过'限制继续射入>> .别问我怎么转数字格式,我不会,嘿嘿…^_^!


还继续回到我们的主题,” 脚本期望的输入变量是数字变量 (ID)”.怎样进行注入防范,天呐,方法太多了,最直接的就是判断是否是数字整型,还有一些比较个*的验证办法,我们一一介绍一下 :程序体(8)


,判断数字是否是整型 

p_lngID = CLng(Request("ID")) 

 取字长 这一点我相信一般的数据长度不会大于8位所以

If len(ID)>8 then 

response.write “bedpost” 

response end 

end if 

 我认为这是一种比较冒险的办法,就是再进行一次数据库的查询,如果数据库表内没有相同的值与之相同那么返回错误

sql = "SELECT NAME FROM Category where ID="&ID 

set temp=conn.Execute(SQL) 

if temp.bof or temp.eof then 

response.Redirect("index.asp") 

else 

cat_name=temp("name") 

end if 

set temp=nothing 





















本文转自loveme2351CTO博客,原文链接:http://blog.51cto.com/loveme23/8412 ,如需转载请自行联系原作者



相关文章
|
2天前
|
SQL 运维 安全
WAF如何防御SQL注入?
【7月更文挑战第25天】WAF如何防御SQL注入?
21 9
|
2天前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【7月更文挑战第25天】在Python Web开发中确保应用安全至关重要。以下是针对SQL注入、XSS与CSRF攻击的防护策略及示例代码
19 6
|
2天前
|
SQL 安全 数据库
|
2天前
|
SQL 存储 安全
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
【7月更文挑战第25天】在Python Web应用开发中,安全至关重要,需防范如SQL注入、XSS与CSRF等攻击。**SQL注入**风险可通过避免直接拼接用户输入至SQL语句,改用参数化查询来缓解。**XSS**则需对用户输入的内容进行HTML转义处理,防止恶意脚本执行。对于**CSRF**,实现包括生成并验证CSRF令牌在内的防护机制是关键。综合运用这些防御策略能显著增强应用的安全性,但需持续学习以对抗不断变化的威胁。
16 5
|
1天前
|
SQL 安全 Go
SQL注入不可怕,XSS也不难防!Python Web安全进阶教程,让你安心做开发!
【7月更文挑战第26天】在 Web 开发中, SQL 注入与 XSS 攻击常令人担忧, 但掌握正确防御策略可化解风险. 对抗 SQL 注入的核心是避免直接拼接用户输入至 SQL 语句. 使用 Python 的参数化查询 (如 sqlite3 库) 和 ORM 框架 (如 Django, SQLAlchemy) 可有效防范. 防范 XSS 攻击需严格过滤及转义用户输入. 利用 Django 模板引擎自动转义功能, 或手动转义及设置内容安全策略 (CSP) 来增强防护. 掌握这些技巧, 让你在 Python Web 开发中更加安心. 安全是个持续学习的过程, 不断提升才能有效保护应用.
7 1
|
1天前
|
SQL 安全 前端开发
Web安全新纪元:Python如何筑起SQL注入、XSS、CSRF的铜墙铁壁?
【7月更文挑战第26天】在Web开发中,安全性至关重要。Python提供强大工具来抵御SQL注入、XSS和CSRF等威胁。使用ORM如Django和SQLAlchemy可防SQL注入; Django等框架自动转义输出防XSS; CSRF通过自动及手动验证令牌来阻止。开发者须持续学习最新安全实践以保护用户数据。迈向Web安全新纪元,Python助你一臂之力。
5 1
|
14天前
|
SQL 安全 网络安全
Victor CMS v1.0 SQL 注入(CVE-2022-26201)
Victor CMS v1.0 SQL 注入(CVE-2022-26201)
|
13天前
|
SQL API Python
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。