网站建设套餐报价
经济型网站建设
实用型网站建设
标准型网站建设
商务型网站建设
网站改版设计
数据库开发程序设计
青岛网页设计制作流程
网站建设完成后,如何上传 (doc)
网站建设完成后,如何上传 (pdf)
青岛网站建设公司的业务范围
网站建设方案模板
网站建设方案安例
韩语网站建设
日语网站建设
英语网站建设
青岛网页设计公司
青岛市网站制作公司
青岛手机网站建设
青岛手机网站
创建flash网站
网站建设费用
我们网站建设网站推广的优势?
建企业网站到底该花多少钱?
做成网站没有人管怎么办?
青岛网站制作
青岛网页制作
青岛网页模板
企业网站,什么内容最重要?
企业网站规划和网页设计问题归纳
如何选择网络公司建设网站?
DIV+CSS网页设计的好处有哪些?
保障您的网站安全
SQL注入的实现原理和防范
学习CSS制作网页总结的一些经验
如何解决Dreamweaver8中CSS应用无效问题
网页出现了乱码,应该怎么办?
企业网站规划和网页设计问题归纳
青岛网页设计公司怎么网页设计?
网站制作专家青岛畅通网站制作公司
网站备案的五个非常规性问题答疑
CSS的十八般技巧
怎么算一个好的网页设计?
网站建设基础知识
网站建设客户疑虑问题解答
八大要领 网站建设就这么简单
企业网站更新的必要性分析
调优Web站点性能完全攻略
网站设计65条原则
几行代码轻松搞定网页的简繁转换
ASP错误大全
网站制作的过程的忠告
SQL注入漏洞入侵的过程及其防范措施
IIS信息服务器排错指导
创建优秀网页的6个好习惯
网页设计要素分析
企业网站定义
青岛网络公司业务内容
网站建设十忌
关于网站制作规范的探讨
谈网页优化
创建优秀网页的6个好习惯
网站设计中10个必须避免的问题
浅谈企业CI在网页设计中的体现
使网站更具有可使用性
企业如何准备建网资料?
探索企业网站更新的方式
教你如何识破网络骗子
网站建设客户疑虑问题解答
十个IT韩语技巧
|
|
|
SQL注入的实现原理和防范
SQL注入的实现原理和防范
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。SQL注入的手法相当灵活,在注入的时候需要根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据.
SQL注入攻击的总体思路是:
1. 发现SQL注入位置;
2. 判断后台数据库类型;
3. 确定XP_CMDSHELL可执行情况
4. 发现WEB虚拟目录
5. 上传ASP木马;
6. 得到管理员权限;
一般来说,SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/abc.asp?id=XX等带有参数的ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。
为了全面了解动态网页回答的信息,首选请调整IE的配置。把IE菜单-工具-Internet选项-高级-显示友好HTTP错误信息前面的勾去掉。
如过网站存在注入漏洞,黑客即可使用正常URL后面跟随入侵代码的方式执行任何操作,比如以下列出系统盘目录的命令:
HTTP://xxx.xxx.xxx/abc.asp?p=YY;insert into temp(id)&nbs ... cmdshell 'dir c:\';
为了防止注入攻击,最基本的方法是进行关键字过滤,现在推荐两种典型代码,可以全局调用或加在每个动态网页之中.
<%
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'ASP通用防注入代码
'您可以把该代码COPY到头文件中.也可以单独作
'为一个文件存在,每次调用使用
'作者:y3gu - 2007-7-29
'http://www.dosu.cn
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim GetFlag Rem(提交方式)
Dim ErrorSql Rem(非法字符)
Dim RequestKey Rem(提交数据)
Dim ForI Rem(循环标记)
ErrorSql = "'~;~and~(~)~exec~update~count~*~%~chr~mid
~master~truncate~char~declare" Rem(每个敏感字符或者词语请使用半角 "~" 格开)
ErrorSql = split(ErrorSql,"~")
If Request.ServerVariables("REQUEST_METHOD")="GET" Then
GetFlag=True
Else
GetFlag=False
End If
If GetFlag Then
For Each RequestKey In Request.QueryString
For ForI=0 To Ubound(ErrorSql)
If Instr(LCase(Request.QueryString(RequestKey)),
ErrorSql(ForI))<>0 Then
response.write "<script>alert(""警告:\n请不要使用敏感字符"");location.href=""Sql.asp"";</script>"
Response.End
End If
Next
Next
Else
For Each RequestKey In Request.Form
For ForI=0 To Ubound(ErrorSql)
If Instr(LCase(Request.Form(RequestKey)),
ErrorSql(ForI))<>0 Then
response.write "<script>alert(""警告:\n请不要使用敏感字符"");location.href=""Sql.asp"";</script>"
Response.End
End If
Next
Next
End If
%>
第二个
Function Checkstr(Str)
If Isnull(Str) Then
CheckStr = ""
Exit Function
End If
Str = Replace(Str,Chr(0),"", 1, -1, 1)
Str = Replace(Str, """", """, 1, -1, 1)
Str = Replace(Str,"<;","<;", 1, -1, 1)
Str = Replace(Str,">;",">;", 1, -1, 1)
Str = Replace(Str, "script", "script", 1, -1, 0)
Str = Replace(Str, "SCRIPT", "SCRIPT", 1, -1, 0)
Str = Replace(Str, "Script", "Script", 1, -1, 0)
Str = Replace(Str, "script", "Script", 1, -1, 1)
Str = Replace(Str, "object", "object", 1, -1, 0)
Str = Replace(Str, "OBJECT", "OBJECT", 1, -1, 0)
Str = Replace(Str, "Object", "Object", 1, -1, 0)
Str = Replace(Str, "object", "Object", 1, -1, 1)
Str = Replace(Str, "applet", "applet", 1, -1, 0)
Str = Replace(Str, "APPLET", "APPLET", 1, -1, 0)
Str = Replace(Str, "Applet", "Applet", 1, -1, 0)
Str = Replace(Str, "applet", "Applet", 1, -1, 1)
Str = Replace(Str, "[", "[")
Str = Replace(Str, "]", "]")
Str = Replace(Str, """", "", 1, -1, 1)
Str = Replace(Str, "=", "=", 1, -1, 1)
Str = Replace(Str, "’", "’’", 1, -1, 1)
Str = Replace(Str, "select", "select", 1, -1, 1)
Str = Replace(Str, "execute", "execute", 1, -1, 1)
Str = Replace(Str, "exec", "exec", 1, -1, 1)
Str = Replace(Str, "join", "join", 1, -1, 1)
Str = Replace(Str, "union", "union", 1, -1, 1)
Str = Replace(Str, "where", "where", 1, -1, 1)
Str = Replace(Str, "insert", "insert", 1, -1, 1)
Str = Replace(Str, "delete", "delete", 1, -1, 1)
Str = Replace(Str, "update", "update", 1, -1, 1)
Str = Replace(Str, "like", "like", 1, -1, 1)
Str = Replace(Str, "drop", "drop", 1, -1, 1)
Str = Replace(Str, "create", "create", 1, -1, 1)
Str = Replace(Str, "rename", "rename", 1, -1, 1)
Str = Replace(Str, "count", "count", 1, -1, 1)
Str = Replace(Str, "chr", "chr", 1, -1, 1)
Str = Replace(Str, "mid", "mid", 1, -1, 1)
Str = Replace(Str, "truncate", "truncate", 1, -1, 1)
Str = Replace(Str, "nchar", "nchar", 1, -1, 1)
Str = Replace(Str, "char", "char", 1, -1, 1)
Str = Replace(Str, "alter", "alter", 1, -1, 1)
Str = Replace(Str, "cast", "cast", 1, -1, 1)
Str = Replace(Str, "exists", "exists", 1, -1, 1)
Str = Replace(Str,Chr(13),"<;br>;", 1, -1, 1)
CheckStr = Replace(Str,"’","’’", 1, -1, 1)
End Function
|