ASP高手请进!数据库字段名被暴!怎么办?
我用的是ACCESS,我对于ASP的安全防范还不是很好~我的一个网站的留言板是用ASP+access做的,最近经常有些人在我的空间留言,其留言后,竟然将我的数据表中的字段...
我用的是ACCESS,我对于ASP的安全防范还不是很好~
我的一个网站的留言板是用ASP+access做的,最近经常有些人在我的空间留言,其留言后,竟然将我的数据表中的字段名暴露出来.
如一般我们留言板的设的字段为:id(编号),name(昵称),about(内容),留言者留言后,竟然出现如:
$(name)或$(name:n)的留言!
他怎么知道我的数据库字段名的?怎么防范啊? 展开
我的一个网站的留言板是用ASP+access做的,最近经常有些人在我的空间留言,其留言后,竟然将我的数据表中的字段名暴露出来.
如一般我们留言板的设的字段为:id(编号),name(昵称),about(内容),留言者留言后,竟然出现如:
$(name)或$(name:n)的留言!
他怎么知道我的数据库字段名的?怎么防范啊? 展开
2个回答
展开全部
定义chksql.asp文件
<%
Dim Query_Badword,Form_Badword,a,Err_Message,Err_Web,name
Query_Badword="'‖select‖update‖chr‖delete‖%20from‖;‖insert‖mid‖master.‖set‖chr(37)‖=‖exec"
Form_Badword="'‖%‖*‖&‖=‖<‖>"
On Error Resume Next
if request.QueryString<>"" then
Chk_badword=split(Query_Badword,"‖")
FOR each Query_Name in Request.QueryString
for a=0 to ubound(Chk_badword)
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(a))<>0 Then
Response.Write "·出错了!参数"&name&"的值中包含非法字符串!<br>·请不要在参数中出现:and update delete ; insert mid master 等非法字符!"
Response.End
End If
next
NEXT
End if
'-----对 post 表 单值的过滤.
if request.form<>"" then
Chk_badword=split(Form_Badword,"‖")
FOR each name in Request.Form
for a=0 to ubound(Chk_badword)
If Instr(LCase(request.form(name)),Chk_badword(a))<>0 Then
Response.Write "·出错了!表单"&name&"的值中包含非法字符串!<br>·请不要在表单中出现: % & * < > 等非法字符!"
Response.End
End If
next
NEXT
end if
%>
把这个文件连接到你的文件中:
如<!--#include file="chksql.asp"-->
修改你的数据库名称,建议你将数据库名中加上%20或其他特殊字符,在IE的地址栏中%20被默认为空格字符,防止数据库被下载!
如: my20%from_data#.mdb
<%
Dim Query_Badword,Form_Badword,a,Err_Message,Err_Web,name
Query_Badword="'‖select‖update‖chr‖delete‖%20from‖;‖insert‖mid‖master.‖set‖chr(37)‖=‖exec"
Form_Badword="'‖%‖*‖&‖=‖<‖>"
On Error Resume Next
if request.QueryString<>"" then
Chk_badword=split(Query_Badword,"‖")
FOR each Query_Name in Request.QueryString
for a=0 to ubound(Chk_badword)
If Instr(LCase(request.QueryString(Query_Name)),Chk_badword(a))<>0 Then
Response.Write "·出错了!参数"&name&"的值中包含非法字符串!<br>·请不要在参数中出现:and update delete ; insert mid master 等非法字符!"
Response.End
End If
next
NEXT
End if
'-----对 post 表 单值的过滤.
if request.form<>"" then
Chk_badword=split(Form_Badword,"‖")
FOR each name in Request.Form
for a=0 to ubound(Chk_badword)
If Instr(LCase(request.form(name)),Chk_badword(a))<>0 Then
Response.Write "·出错了!表单"&name&"的值中包含非法字符串!<br>·请不要在表单中出现: % & * < > 等非法字符!"
Response.End
End If
next
NEXT
end if
%>
把这个文件连接到你的文件中:
如<!--#include file="chksql.asp"-->
修改你的数据库名称,建议你将数据库名中加上%20或其他特殊字符,在IE的地址栏中%20被默认为空格字符,防止数据库被下载!
如: my20%from_data#.mdb
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询