关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » SQL语言 »Web安全防范 数据库策略应一马当先

    Web安全防范 数据库策略应一马当先

    2010-07-08 09:38:00 出处:ITJS
    分享

    一, 数据库安全性

    1,    MS SQL Server数据库安全性

    Web中不允许使用sa级的用户连接数据库

    解决方法:

    删除sa用户,新建一个权限为sa的用户,用户名和密码一样要复杂。以防暴力破解。

    新建一个web连接用户,去掉所有服务器角色,在用户映射中加入此用户要操作的数据库和db_public身份。

    假如需要其它操作要另加权限(如只加insert/delete/select/update)。

    每个人都没法保证自己写的代码没有漏洞。只要在数据库层做下处理以防入侵。假如有SQL注入db_public身份一样能对数据库添加/修改/删除权限,所以一定不能存在SQL注入漏洞。

    假如能防SQL注入和权限限制就很难发生暴库/跨库现像。

    专题:SQL Server 2008/2005全解

    2,    Access数据库安全性

    解决方法:

    防暴库:在数据库连接时加入错误处理代码,假如数据库连接失败就提示错误信息或转向。不能由系统本身提示错误信息,

    防下载。

    第一步:新建一个表。

    第二步:在表中建一个字段,名称随意,类型是OLE对象,然后用ASP代码向字段中添加一条记录写入单字节的"<%" 代码为:Insert into tablename(fieldname) value (chrB(asc("<")) & chrB(asc("%")))。

    第三步:将数据库改名为*.ASP

    最安全的方法是用使用ODBC数据源连接

    二,   web代码安全性

    1,    备份文件时的小漏洞。

    有些ASP编辑器会自动备份asp文件,并且改名为*.bak,这样就存在了会被下载的漏洞,在给asp文件改名时,不要修改为*.txt/.bak/等等,一定要保存扩展名不变(*.asp),在上传到站点时请不要上传备份文件。

    2,    防SQL注入。

    SQL注入主要是单引号没有过滤,让人利用,重新生成一个具有威胁性的SQL语句。

    如:http://www.livexy.com/view.asp id=100 假如存在SQL注入我们就可以这么写:http://www.livexy.com/view.asp id=100 ;delete * from tablename;后台运行时为select * from aaa where;delete * from tablename

    在这里要提醒大家,不要认为.net的安全性高就没有SQL注入了。错,只要和数据库操作有关的都存在SQL注入漏洞。无论是软件还是网站,都存在。

    解决方法:

    在页面的开始位置过滤接收到的非法字符,如exec /delete /insert into/update/’ 等等,这里过滤不是指将非法字符过滤为空串,而是过滤为相近的字符。或者假如存在非法字符则转向到错误处理页面。这里说个例子假如将exec过滤为空串时会出来什么后果,假如字串中存在exexecec 请问过滤后是什么,还是exec。这里不多说了,大家都明白了哈。

    假如接收参数为数值型时,必需要先判断数据类型,以防出现其它错误。往往黑客信息的来源就是页面出错的信息。

    假如参数为字符型时,必需要过滤字符串中的单引号为双引号或其它字符。

    这里写个例子:往往我们的代码都是这么写的select * from aaa where bbb=’” + sVal +”’” 表面上看是没有问题的,是正确的,不过此句存在SQL注入。为什么呢,请看:sVal的值是外部提交的数据,假如sVal的值为aaa’;delect * from bbb;-- 写在一起就是:select * from aaa where bbb=’ aaa’;delect * from bbb;--‘其中-- ‘为注释。

    使用DbParameter比拼接SQL来的完全的多。

    3,    登录漏洞。

    解决方法:

    过滤非法字符串

    SQL写法

    select password from user where username=’” + sqlstr(sUser) + “’”  

    其中sqlstr()为过滤非法字符串函数,sUser为用户名文本框中输入的字符。然后在判断数据库中的密码和输入的密码是否一致。

    原理:由用户名在数据库中找到此用户的记录,然后在用密码比较。千万不要用“select * from user where username=’” + sqlstr(sUser) + “’ and password=’” + sqlstr(sPass) + “’” 然后在判断是否为空。”这种方法。

    4,    防另存为

    解决方法:

    <NOSCRIPT><IFRAME SRC="*.html"></IFRAME></NOSCRIPT>  

    防止别人下载网站的HTML代码,当然不是很完美,不过也够呛。

    5,    防被内嵌

    解决方法:

    <script>if (self != top) { top.location = self.location; }</script>  

    防止别人内嵌我们的网站,然后做些手角。如键盘记录呀,监视我们输入的数据呀等等。

    6,    防本地提交数据

    解决方法:

    在保存数据时第一步判断来源,假如不是从指定的来源提交数据,出示错误信息。

    第二步对提交数据进行非法字符过滤。

    第三步保存到数据库,保存时一定要进行错误处理。

    7,    防无限刷新

    解决方法:

    这个比较难做,当然也有很多种方法。

    1,在服务器上做手角

    2,在代码中加入访问日志信息,通过分析日志信息来判断同一人访问频率。

    3,用js操作cookies来记录访问日志信息,判断访问频率。这种方法不会占用服务器的资源。

    8,    防无限提交数据/防ajax自动提交数据

    解决方法:

    加入验证码和提交时间(如一分种发信息)限制功能。

    9,    防js代码

    解决方法:

    要想过滤所有js代码这点很难办法,js攻击漏洞占大多数。Js的写法也千奇白怪。这里发上一些具有攻击性的html代码。这些都是常见到的,并且每一种都不同的写法。单引号和双引号不同/大小写不同/先后循序不同/tab和空格不同/Html标签不同/事件不同/样式不同等等。

    <P style="BACKGROUND:url(JAVA   SCRIPT:alert('11111'))">test</P>   <body>   <img src="http://www.challenger.se/images/note_yellow.gif"/>   <img src="JAVASCRIPT:alert('888888')" />   <STYLE>div{behavior: url("htc.js");};<style>   <STYLE>body{oMouseOut: eXpreSsIon(onclick = function(){alert('33333');})} <style>   <STYLE>body{background:url(JAVASCRIPT:alert('22222'));} <style>   <STYLE>@import "JAVASCRIPT:alert('444444')"; <style>   <link href="JAVASCRIPT:alert('777777')" rel="stylesheet" />   <script src= hk.js></script>   <P style="BACKGROUND:url(JAVASCRIPT:document.write('<script src=hk.js></script>'))">test</P>   <iframe src='hk1.html'></iframe>  

    10,防Cookie假冒

    解决方法:

    密码信息不要存放在Cookie中

    在用到Cookie中的数据时,一定要从数据库中重新读取。然后比较。以防Cookie篡改。

    Cookie数据需要加密

    11,缓冲区溢出

    解决方法:

    服务器中不要打开无用软件。

    在服务端运行的代码中,用到一个对像一定要释放。

    在客户端运行的js/vbs/activex/flash代码中,用到的dom对像在结束时一定要释放。

    12,其它

    防浏览器插件

    修改IE的安全选项把“活动脚本”和ActiveX的运行设置为禁用或提示。

    或在IE安全设置里将安全级别设为高。隐私选项也设为高。

    三,   服务器安全性

    关闭无用端口

    下载补丁/更新操作系统

    安装杀毒软件

    安装防火墙

    假如服务器上有多个站点,为每一个站点分配权限,每个站点都不能操作其它文件和目录,也不能影响到其它站点。

    注意:其实以上内容大家都知道,哪么为什么还会出现这么多漏洞呢。有时候我和其它的同伴常说一些费话,我常常会说单引号过滤了吗,回答是都过滤了,我又说请再看一遍回答我,回答的还是都过滤了,当我看时依然是没有完全过滤。这能反应一个什么问题大家都明白了吧。因为大家在写代码时写法都是select * from aaa where bbb=’” + sVal +”’”已成习惯。其实我也常犯这个错误,所以特别在这里提出。这就是重重之重。

    原文标题:web安全问题汇总

    链接:http://www.cnblogs.com/livexy/archive/2010/07/07/1773199.html

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    商业智能成CIO优先关注点 技术落地方显成效(1)

    用linux安装MySQL时产生问题破解

    JAVA中关于Map的九大问题

    windows 7旗舰版无法使用远程登录如何开启telnet服务

    Android View 事件分发机制详解

    MySQL用户变量的用法

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。