例程讲解Web数据库安全防护

时间:2022-12-07 07:02:43 作者:燕良 综合材料 收藏本文 下载本文

“燕良”通过精心收集,向本站投稿了7篇例程讲解Web数据库安全防护,下面小编给大家整理后的例程讲解Web数据库安全防护,欢迎阅读!

篇1:例程讲解Web数据库安全防护

数据库是Web的命脉,由于管理者的安全疏漏使得其成为攻击者入侵Web的入口,如何来加固Web数据库呢?笔者就以当前使用比较广泛的Access和MSSQL数据库为例,说说Web数据库的安全防护。

1、Access数据库防下载

数据库被下载这对Web来说几乎是毁灭性的,因为攻击者从中可以获取包括管理员帐户及密码等在内的敏感信息,然后实施进一步的攻击。可被下载的数据库主要是Access数据库,采用这种数据库的Web站点不在少数。防止Access数据库下载,可以从以下几个方面入手。

(1)数据库改名

数据库改名包括两部分,首先将其改成比较生僻的名称,建议名字足够长并使用某些特殊字符以防被攻击者猜中。另外,将mdb后缀改为asp,以防数据库被下载。当然数据库改名后,数据库连接配置文件也要进行修改。(图1)

(2)改变数据库路径

站点系统都有默认的数据库路径,由于安全意识淡薄,部署Web站点时有很多人不去修改数据库路径,因而攻击者很容易地猜到该站点的数据库路径。

更改数据库路径,大家可以在站点目录下创建比较生僻的目录,然后将数据库文件拷贝到该目录中。当然,更改数据库路径后,需要修改站点系统的数据库连接文件。一般asp站点系统的数据库连接文件是conn.asp。打开该文件后,然后根据实际情况进行修改,使得其跟当前的数据库路径相一致。(图2)

(3)设置好目录权限

要设置好数据库目录的访问权限,原则是权限最小化以防止非正常的访问。因为Web程序是通过IIS用户运行的,我们只要给IIS用户读取和写入权限,然后通过“IIS管理器”把这个目录的脚本执行权限去掉,防止入侵者在该目录中通过上传获得webshell了。(图3)

(4)添加mdb的扩展映射

IIS对于不能解析的文件类型就会弹出下载对话框让用户下载,我们可以通过在IIS管理器中添加对mdb的扩展映射,防止数据库被下载。其设置方法是:打开IIS管理器定位到相应的Web站点,右键选择“属性”,然后依次点击“主目录→配置→映射”,在“应用程序扩展”里面添加.mdb文件应用解析,至于用于解析它的可执行文件大家可以自己进行选择,只要让攻击者无法访问数据库文件就可以了。(图4)

(5)数据库改造

思路是将数据库后缀名(.mdb)修改为.asp,然后在数据库中加上一个NotDownLoad的表以防数据库被下载。具体操作方法如下:

首先新建一个.asp文件(notdown.asp),其代码如下:

db=“DataShop.asp”'这里改成你的数据库地址,这是相对根目录的地址

setconn=server.createobject(“Adodb.Connection”)

connstr=“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=”&Server.MapPath(db)

conn.openconnstr

conn.execute(“createtablenotdownload(notdownoleobject)”)

setrs=server.createobject(“adodb.recordset”)

sql=“select*fromnotdownload”

rs.opensql,conn,1,3

rs.addnew

rs(“notdown”).appendchunk(chrB(asc(“<”))&chrB(asc(“%”)))

rs.update

rs.close

setrs=nothing

conn.close

setconn=nothing

然后在服务器端运行notdown.asp,这样在数据库添加了包含notdown字段的notdownload数据表,即可防止数据库的下载,因为notdown有一个值是“< %”,asp运行是因缺少“% >”关闭标记而拒绝访问,下载当然会失败,

(图5)

2、MSSQL数据库防注入

MSSQL数据库是大中型Web站点常采用的数据库,对于SQL数据最大的威胁是注入。攻击者通过注入来调用SQL语句执行系统命令,因此其危险性更大。一个注入点,有可能造成整个Web服务器的沦陷。防MSSQL注入可以从下面几个方面入手。

(1)慎重选择建站系统

通过站点系统建立一个Web站点是非常容易的,但是某些站点系统代码编写不够严谨,考虑不周,变量过滤不严等使得可被攻击者利用。因此,选择一款安全的站点系统是至关重要的。当然,没有百分之百安全的站点系统。管理员如果懂代码的话可以进行检测分析,看看是否有漏洞。另外,可以扮演入侵者进行入侵检测。最后,及时打补丁也是非常重要的。

(2)最小权限连接数据库

Web站点连接数据库都是通过相应的帐户进行连接,在这些帐户中SA是权限最大的也是最危险的。数据库不要用SA帐户,使用SA帐户连接数据库对服务器来说就是一场灾难。一般来说可以使用DB_OWNER权限帐户连接数据库,如果可以正常运行,使用public用户最安全的。设置成dbo权限连接数据库之后,入侵者基本就只能通过猜解用户名和密码或者是差异备份来获得webshell了,对于前者,我们可以通过加密和修改管理后台的默认登陆地址来防御。对于差异备份,我们知道它的条件是有备份的权限,并且要知道web的目录。这样被攻击的可能性大大地降低。(图6)

(3)删除危险的存储过程

MSSQL数据库系统集成了较多的存储过程,这些命令集方便了我们的操作当然也为攻击者入侵Web提供了便利。因此我们要根据需要删除某些在Web中用不到的,并且可被攻击者利用才存储过程。比如xp_regread和xp_dirtree这两个存储过程可被攻击者用来读取注册表信息和列目录,我们可以删除。另外,xp_cmdshell可被用来执行DOS命令比如建立系统帐户等等,是非常危险的。sp_makwebtask过程,可以读取SQL SELECT命令所得到的结果到表格形式的HTML文件中。这些比较危险可被攻击者利用的存储过程我们可以删除。比如删除xp_cmdshell可以执行“exec master..sp_dropextendedproc xp_cmdshell”,其它的类似。(图7)

(4)修改错误页,误导攻击者

SQL注入入侵是根据IIS给出的ASP错误提示信息来入侵的,如果我们把IIS设置成不管出什么样的ASP错误,只给出一种错误提示信息,即http 500错误,那么攻击者就无法获得敏感信息实施入侵了。打开IIS管理器选择相应的Web站点打开其站点属性窗口,在“自定义错误”选项卡下选择“500:100”点击“编辑”打开“编辑自定义错误属性”窗口,消息类型选择“文件”,然后通过浏览定位到自己构造的错误页,比如“c:test.htm”,然后确定即可。(图8)

总结:防下载、防注入这是从Web安全的角度出发实施的非常规措施,在常态下我们一定要做好Web数据库的备份,这才是最基本的。

篇2:数据库防脚本注入WEB安全

网站安全非常重要,所以一个网站必须要有对攻击的基础防范措施,比如脚本攻击,跨域攻击,数据库注入攻击等,下面分享一个使用的防止数据库Sql脚本注入的使用类

using System;

using System.Collections.Generic;

using System.Text;

namespace NZS.Common

{

public class Filter

{

///

/// 检测是否含有危险字符(防止Sql注入)

///

///

预检测的内容

/// 返回True或false

public static bool HasSqlKeywords(string contents)

{

bool ReturnValue = false;

if (contents.Length >0)

{

string LowerStr = contents.ToLower;

string RxStr = @”(/sand/s)|(/sand/s)|(/slike/s)|(select/s)|(insert/s)|(delete/s)|(update/s[/s/S].*/sset)|(create/s)|(/stable)|(<[iframe.|/iframe.|script.|/script])|(‘)|(/sexec)|(declare)|(/struncate)|(/smaster)|(/sbackup)|(/smid)|(/scount)|(cast)|(%)|(/sadd/s)|(/salter/s)|(/sdrop/s)|(/sfrom/s)|(/struncate/s)|(/sxp_cmdshell/s)”; //Match 检查数据库里面关键字和一些特殊字符,如单引号

System.Text.RegularExpressions.Regex Rx = new System.Text.RegularExpressions.Regex(RxStr);

ReturnValue = Rx.IsMatch(LowerStr, 0);

}

return ReturnValue;

}

///

/// 过滤 Sql 语句字符串中的注入脚本

///

///

传入的字符串

/// 过滤后的字符串

public static string SqlFilter(string str)

{

str = str.Replace(“””, “‘’”);

//单引号替换成两个单引号

str = str.Replace(“‘”, “‘”);

//半角封号替换为全角封号,防止多语句执行

str = str.Replace(“;”, “;”);

//半角括号替换为全角括号

str = str.Replace(“(“, “(”);

str = str.Replace(“)”, “)”);

///////////////要用正则表达式替换,防止字母大小写得情况////////////////////

//去除执行存储过程的命令关键字

str = str.Replace(“Exec”, “”);

str = str.Replace(“Execute”, “”);

//去除系统存储过程或扩展存储过程关键字

str = str.Replace(“xp_”, “x p_”);

str = str.Replace(“sp_”, “s p_”);

//防止16进制注入

str = str.Replace(“0x”, “0 x”);

return str;

}

}

}

篇3:PHP安全防护web攻击实例介绍

网络安全是目前互联网的热门话题之一,作为个人用户的我们同样需要关注,做好防护。常见的Web攻击分为两类:一是利用Web服务器的漏洞进行攻击,如CGI缓冲区溢出,目录遍历漏洞利用等攻击;二是利用网页自身的安全漏洞进行攻击,如SQL注入,跨站脚本攻击等。下面这篇文章主要介绍了PHP安全防护之Web攻击,需要的朋友可以参考,下面来一起看看吧。

SQL注入攻击(SQL Injection)

攻击者把SQL命令插入到Web表单的输入域或页面请求的字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。

常见的SQL注入式攻击过程类如:

1.某个Web应用有一个登录页面,这个登录页面控制着用户是否有权访问应用,它要求用户输入一个名称和密码;

2.登录页面中输入的内容将直接用来构造动态的SQL命令,或者直接用作存储过程的参数;

例如:

$query = 'SELECT * from Users WHERE login = ' . $username . ' AND password = ' . $password;

3.攻击者在用户名字和密码输入框中输入'或'1'='1之类的内容;

4.用户输入的内容提交给服务器之后,服务器运行上面的代码构造出查询用户的SQL命令,但由于攻击者输入的内容非常特殊,所以最后得到的SQL命令变成:

SELECT * from Users WHERE login = '' or '1'='1' AND password = '' or '1'='1';

5.服务器执行查询或存储过程,将用户输入的身份信息和服务器中保存的身份信息进行对比;

6.由于SQL命令实际上已被注入式攻击修改,已经不能真正验证用户身份,所以系统会错误地授权给攻击者。

如果攻击者知道应用会将表单中输入的内容直接用于验证身份的查询,他就会尝试输入某些特殊的SQL字符串篡改查询改变其原来的功能,欺骗系统授予访问权限。

系统环境不同,攻击者可能造成的损害也不同,这主要由应用访问数据库的安全权限决定。如果用户的帐户具有管理员或其他比较高级的权限,攻击者就可能对数据库的表执行各种他想要做的操作,包括添加、删除或更新数据,甚至可能直接删除表

防范方法:

1.检查变量数据类型和格式

2.过滤特殊符号

3.绑定变量,使用预编译语句

跨网站脚本攻击(Cross Site Scripting, XSS)

攻击者将恶意代码注入到网页上,其他用户在加载网页时就会执行代码,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。这些恶意代码通常是JavaScript、HTML以及其他客户端脚本语言。

例如:

echo “欢迎您,”.$_GET['name'];

如果传入一段脚本 ,那么脚本也会执行。用这样的URL将会执行JavaScript的alert函数弹出一个对话框:常用的攻击手段有:

盗用cookie,获取敏感信息;

利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作;

利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动;

在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

防范方法:使用htmlspecialchars函数将特殊字符转换成HTML编码,过滤输出的变量

跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF)

攻击者伪造目标用户的HTTP请求,然后此请求发送到有CSRF漏洞的网站,网站执行此请求后,引发跨站请求伪造攻击。攻击者利用隐蔽的HTTP连接,让目标用户在不注意的情况下单击这个链接,由于是用户自己点击的,而他又是合法用户拥有合法权限,所以目标用户能够在网站内执行特定的HTTP链接,从而达到攻击者的目的。

它与XSS的攻击方法不同,XSS利用漏洞影响站点内的用户,攻击目标是同一站点内的用户者,而CSRF 通过伪装成受害用户发送恶意请求来影响Web系统中受害用户的利益。

例如:

某个购物网站购买商品时,item参数确定要购买什么物品,num参数确定要购买数量,如果攻击者以隐藏的方式发送给目标用户链接

,那么如果目标用户不小心访问以后,购买的数量就成了100个

防范方法:

1、检查网页的来源

2、检查内置的隐藏变量

3、使用POST,不要使用GET,处理变量也不要直接使用$_REQUEST

相关阅读:2018网络安全事件:

一、英特尔处理器曝“Meltdown”和“Spectre漏洞”

1月,英特尔处理器中曝“Meltdown”(熔断)和“Spectre” (幽灵)两大新型漏洞,包括AMD、ARM、英特尔系统和处理器在内,几乎近发售的所有设备都受到影响,受影响的设备包括手机、电脑、服务器以及云计算产品。这些漏洞允许恶意程序从其它程序的内存空间中窃取信息,这意味着包括密码、帐户信息、加密密钥乃至其它一切在理论上可存储于内存中的信息均可能因此外泄。

二、GitHub 遭遇大规模 Memcached DDoS 攻击

202月,知名代码托管网站 GitHub 遭遇史上大规模 Memcached DDoS 攻击,流量峰值高达1.35 Tbps。然而,事情才过去五天,DDoS攻击再次刷新纪录,美国一家服务提供商遭遇DDoS 攻击的峰值创新高,达到1.7 Tbps!攻击者利用暴露在网上的 Memcached 服务器进行攻击。网络安全公司 Cloudflare 的研究人员发现,截止2018年2月底,中国有2.5万 Memcached 服务器暴露在网上 。

三、苹果 iOS iBoot源码泄露

2018年2月,开源代码分享网站 GitHub(软件项目托管平台)上有人共享了 iPhone 操作系统的核心组件源码,泄露的代码属于 iOS 安全系统的重要组成部分——iBoot。iBoot 相当于是 Windows 电脑的 BIOS 系统。此次 iBoot 源码泄露可能让数以亿计的 iOS 设备面临安全威胁。iOS 与 MacOS 系统开发者 Jonathan Levin 表示,这是 iOS 历史上最严重的一次泄漏事件。

四、韩国平昌冬季奥运会遭遇黑客攻击

2018年2月,韩国平昌冬季奥运会开幕式当天遭遇黑客攻击,此次攻击造成网络中断,广播系统(观众不能正常观看直播)和奥运会官网均无法正常运作,许多观众无法打印开幕式门票,最终未能正常入场。

五、加密货币采矿软件攻击致欧洲废水处理设施瘫痪

2018年2月中旬,工业网络安全企业 Radiflow 公司表示,发现四台接入欧洲废水处理设施运营技术网络的服务器遭遇加密货币采矿恶意软件的入侵。该恶意软件直接拖垮了废水处理设备中的 HMI 服务器 CPU,致欧洲废水处理服务器瘫痪 。

Radiflow 公司称,此次事故是加密货币恶意软件首次对关键基础设施运营商的运营技术网络展开攻击。由于受感染的服务器为人机交互(简称HMI)设备,之所以导致废水处理系统瘫痪,是因为这种恶意软件会严重降低 HMI 的运行速度。

web攻击

篇4:关于ACCESS数据库暴库的解决方法WEB安全

1、在数据库连接中加入容错代码<%on error resume next %>或者在IIS中关闭客户端的错误提示 ,

关于ACCESS数据库暴库的解决方法WEB安全

2、在数据库里使用如下语句<% zhenzhen520 <%来防止数据库被下载 。

3、把数据库存在非相对路径下,例如:你本来的路据库路径是:c:wwwdatadvbbs.asp,这时你可以把数据库改放在d:dvbbs.asp里,这样攻击者就无法下载数据库 。

篇5:网络时代 web数据安全防护的八大要诀WEB安全

如果说20世纪初期被称为计算机时代的话,那么现在无疑进入了网络时代,计算机作为构架网络的最初的终端已经逐渐被新的终端所取代,虽然网络还是需要终端,但是在这个时代,网络的重要性似乎远大于终端。但是不管是网络还是终端,信息安全问题是信息时代人们所最为关心的,所以当人们的数据中心正走向网络的时候,人们的安全防护也必须紧跟这个脚步。

WEB防护八大要诀 构建立体网络防护

对于任何一个项目,开始阶段对于交付安全的应用来说非常关键。适当的安全要求会导致正确的安全设计。

1、认证和口令管理

这主要是一种一次性的活动而且仅仅是作为项目的一部分而完成的。有人可能会问一些与认证和口令管理有关的问题:

【口令策略】这个问题非常重要的原因在于避免与用户凭据有关的字典攻击。

【口令哈希算法】确保通过适当的加密算法来加密口令也非常重要。

【口令重置机制】为了避免 修改或截获口令,重置机制非常关键。

2、认证和角色管理

在分析项目的安全问题时,要确认所有的关键功能,并确认哪些人可以获得授权访问这些功能。这样做有助于确认各种不同的角色,并可以使访问控制到位。

3、审计日志记录

询问并确认所有与已经发生的攻击有关的所有关键业务是很重要的,这是因为这些攻击对企业的会产生重大影响。企业应当能够分析与这些业务有关的审计日志记录。

4、第三方组件分析

询问并分析一下企业是否必须使用第三方的组件也是一个重要问题。在此基础上,企业分析与这些组件有关的已知漏洞,并做出恰当的建议。

5、输入数据验证和净化

询问并理解和分析输入数据的属性,并为数据的验证和净化做好计划是很重要的,

这种操作主要与解决跨站脚本攻击这类漏洞有关。数据验证和净化还有助于避免SQL注入的大规模发生。

6、加密和密钥管理

这是为了分析是否存在需要保证其安全的业务,并且这些业务是否需要握手机制(在处理业务之前,可使用多种与公钥或私钥的交换有关的多种技术来实施这种机制)。

7、源代码的完整性:

这是一种一次性的活动,并且要求在项目的开始阶段完成。这样做有助于如下两个方面:

源代码应当存放在一个有良好安全保障的控制仓库中,并且在遵循“最少特权”的原则前提下,有强健的认证和基于角色的访问控制。你还应当关注关于源代码库和相关工具的问题。

此外,在代码的开发及传输过程中,你还可以分析关于源代码容器的工具问题以及代码的保护问题。

8、源代码的管理。

讨论源代码的审查策略是一个关键问题,因为这种做法会要求自动化的和人工的代码检查问题,并且在一定程度上会影响总体的项目时间(要求进行代码检查时间和针对检查意见的修复时间)。这是一种一次性的活动,因而应当在项目的开始阶段完成。

加密被不置一次提到 数据时代加密是最核心的防护

从上面的八个要诀我们可以看出,虽然是基于网络防护的手段,但是其中许多层面不只一次的出现了加密防护的身影。由此我们可以得知,虽然我们防护的是网络,但是防护的主题依然是那些“遨游”于网络的价值数据。而作为最贴近的数据本源防护的手段,加密技术自然是最佳的选择。而为了应对网络层面多样的 防护需求和安全环境,采用国际先进的多模加密技术又无疑是最佳的选择。

多模加密技术采用对称算法和非对称算法相结合的技术,在确保了数据本源防护质量的同时,其多模的特性能让用户自主地选择加密模式从而能更灵活地应对各种防护需求。

从终端防护到网络防护,数据正遭遇多种多样的安全危机。但是由于数据价值的不断提升,保护数据本源仍是我们最需要关注的,而不管环境和防护策略 如何变化,贴近数据核心的防护总是最有效的,出于这种考虑,个人、企业甚至国家采用灵活且具有针对性的加密软件进行数据安全防护就是最好的选择!

篇6:通过HttpModule实现数据库防注入WEB安全

通过相应的关键字去识别是否有 Sql注入攻击代码

string SqlStr = “and |exec |insert |select |delete |update |count | * |chr |mid |master |truncate |char |declare ”;

在下面的代码中你要看以上面的定义, 其实就是定义要识别的关键字.

而我们处理请求一般都是通过 Request.QueryString / Request.Form. 这两种

我们可以专门写一个类去处理这些请求, 但如果在每一个处理环节都载入这个类去做处理, 那太麻烦了.

如果写一个ISAPI当然也能完成这个功能的实现, 但在.NET 中 HttpModule帮我们实现了类似于ISAPI Filter的功能, 所以改为通过 HttpModule 去处理这些事情是最好不过的啦.

我们现在要用到的只是里面的BeginRequest这个事件, 所以只需要注册BeginRequest这个事件就可以了.

REM 过滤字符串

Dim strFilter As String = “and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare|&”

REM 分割后的过滤字符串数组

Dim strf As String

Dim strTemp1, strTemp2 As String

strf = strFilter.Split(“|”)

If Request.RequestType = “GET” Then

For Each strTemp1 In Request.QueryString

For Each strTemp2 In strf

If InStr(LCase(strTemp1), LCase(strTemp2), CompareMethod.Text) Then

Response.Write(“想干啥?别注我!有漏洞通知QQ:26242000”)

Response.End()

End If

Next

Next

ElseIf Request.RequestType = “POST” Then

For Each strTemp1 In Request.Form

For Each strTemp2 In strf

If InStr(LCase(strTemp1), LCase(strTemp2), CompareMethod.Text) Then

Response.Write(“想干啥?别注我!有漏洞通知QQ:26242000”)

Response.End()

End If

Next

Next

End If

再来看看我在百度上找的sql防攻击代码

// @copyright S.Sams Lifexperience blog.8see.net/

using System;

namespace Theme.Services.Public

{

///

/// SqlstrAny 的摘要说明,

///

public class ProcessRequest

{

public ProcessRequest()

{

//

// TOD 在此处添加构造函数逻辑

//

}

#region SQL注入式攻击代码分析

///

/// 处理用户提交的请求

///

public void StartProcessRequest()

{

try

{

string getkeys = “”;

string sqlErrorPage = System.Configuration.ConfigurationSettings.AppSettings[“CustomErrorPage”].ToString();

if (System.Web.HttpContext.Current.Request.QueryString != null)

{

for(int i=0;i

{

getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i];

if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys]))

{

System.Web.HttpContext.Current.Response.Redirect (sqlErrorPage+“?errmsg=sqlserver&sqlprocess=true”);

System.Web.HttpContext.Current.Response.End();

}

}

}

if (System.Web.HttpContext.Current.Request.Form. != null)

{

for(int i=0;i

{

getkeys = System.Web.HttpContext.Current.Request.Form.Keys[i];

if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys]))

{

System.Web.HttpContext.Current.Response.Redirect (sqlErrorPage+“?errmsg=sqlserver&sqlprocess=true”);

System.Web.HttpContext.Current.Response.End();

}

}

}

}

catch

{

// 错误处理: 处理用户提交信息!

}

}

///

/// 分析用户请求是否正常

///

///

传入用户提交数据

/// 返回是否含有SQL注入式攻击代码

private bool ProcessSqlStr(string Str)

{

bool ReturnValue = true;

try

{

if (Str != “”)

{

string SqlStr = “and |exec |insert |select |delete |update |count | * |chr |mid |master |truncate |char |declare ”;

string[] anySqlStr = SqlStr.Split('|');

foreach (string ss in anySqlStr)

{

if (Str.IndexOf(ss)>=0)

{

ReturnValue = false;

}

}

}

}

catch

{

ReturnValue = false;

}

return ReturnValue;

}

#endregion

}

}

// System.Configuration.ConfigurationSettings.AppSettings[“CustomErrorPage”].ToString(); 这个为用户自定义错误页面提示地址,

//在Web.Config文件时里面添加一个 CustomErrorPage 即可

//

//

篇7:通过建立安全模型保障Web数据库安全运行

随着Web数据库的应用越来越广泛,Web数据库的安全问题日益突出,如何才能保证和加强数据库的安全性已成为目前必须要解决的问题,

Web数据库是数据库技术与Web技术的结合,其中存在诸多安全隐患,如通过网络传输的用户名和密码很容易被人窃取。用户读取的数据可能被截取、篡改等。如何保障Web数据库的安全运行呢?

建立安全模型

通常,安全措施是计算机系统中用户使用数据库应用程序一直到访问后台数据库要经过的安全认证过程。

当用户访问数据库时首先通过数据库应用程序进入到数据库系统,这时数据库应用程序将用户提交的用户名与口令(口令密文)交给数据库管理系统进行认证,在确定其身份合法后,才能进入下一步的操作。当要对数据库中的对象(表、视图、触发器、存储过程等)进行操作时,也必须通过数据库访问的身份认证,只有通过了数据库的身份认证才能对数据库对象进行实际的操作。

通过身份认证的用户,只是拥有了进入应用系统和数据库的“凭证”,但用户在应用系统和数据库中可以进行什么样的操作,就要依靠“访问控制”和“存取控制”的权限分配和约束。其中“访问控制”与应用系统相关,决定当前用户可以对应用系统中哪些模块、模块中的哪些工作流程进行管理;“存取控制”与数据库相关联,决定当前用户可以对数据库中的哪些对象进行操作,以及可以进行何种操作。虽然“访问控制”和“存取控制”可以将用户的应用系统访问范围最小化,数据对象操作权限最低化,但是就数据库本身而言,利用这种视图、触发器、存储过程等方法来保护数据和对一些敏感数据的“加密存储”也是数据库管理系统提供的安全策略。

审计追踪和数据备份

目前还没有任何一种可行的方法来彻底解决合法用户在通过身份认证后滥用特权的问题,但审计追踪仍是保证数据库安全不可缺的一道重要防线。

审计是一种监视措施,跟踪记录有关数据的访问活动。审计追踪把用户对数据库的所有操作自动记录下来,存放在审计日志中(Audit Log)。记录的内容一般包括:操作类型(如修改、查询、删除),操作终端标识与操作者标识,操作日期和时间,操作所涉及到相关数据(如基本表、视图、记录、属性等),数据库的前象和后象等。利用这些信息,可以进一步找出非法存取数据的库人、时间和内容等。

数据库管理系统往往都将其作为可选特征,允许相应的操作语句可灵活的打开或关闭审计功能。

数据库备份恢复策略

计算机同其他设备一样,都可能发生故障。计算机故障的原因多种多样,包括磁盘故障、电源故障、软件故障、灾害故障以及人为破坏等。一旦发生这种情况,就可能造成数据库的丢失。因此数据库系统必须采取必要的措施,以保证发生故障时,可以恢复数据库。数据库系统管理系统的备份和恢复机制就是保证在数据库系统出故障时,能够将数据库系统还原到正常状态,

数据备份(建立冗余数据)是指定期或不定期地对数据库进行复制。可以将数据复制到本地机制上,也可以复制到其他机器上。恢复方法通常是可以利用利用备份技术、事务日志技术、镜像技术完成。

视图机制和数据加密

为不同的用户定义不同的视图,可以限制各个用户的访问范围。通过视图机制把要保护的数据对无权存取这些数据的用户隐藏起来,从而自动地对数据库提供一定程度的安全保护。但是视图机制的安全性保护不太精细,往往不能达到应用系统的要求,其主要功能在于提供了数据库的逻辑独立性。在实际应用中,通常将视图机制与授权机制结合起来使用,首先用视图机制屏蔽一部分保密数据,然后在视图机制上进一步定义存取权限。

数据加密(Data Encryption)是防止数据库中数据存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始数据(明文plaintext)加密成为不可直接识别的格式(密文,ciphertext),数据以密文的方式存储和传播。

Web数据库的安全威胁涉及许多方面,是一个全局性的问题,而且 的攻击手段和方法不断翻新,因此要根据企业的实际需求综合考虑各种技术,构建一个有机的结合体。

同时也要清醒地认识到一个很好的安全解决方案不仅是纯粹的技术问题,而且还需要法律、管理、社会因素的配合。

常见Web数据库安全技术

用户标识和鉴别:

用户标识与鉴定的方法有多种,为了获得更强的安全性,通常是多种方法并用。系统通过核对口令来判别用户的真伪。这种方法简单易行,但是也是一个不安全的方法,不能抵御口令的猜测攻击;另外,攻击者可能 通信信道或进行网络窥探(sniffer),口令的明文传输使得攻击者只要能在口令传输过程中获得口令,系统就会被攻破。口令以明文形式在通信信道上传输容易被窃取,因此人们通常采用更复杂的方法--口令加密,口令以密文形式在通信信道上传输。

智能卡技术:

智能卡由微处理器、存储器、输入输出设备组成,其中微处理器可计算该卡的一个序列号(ID)和其他数据的加密形式,ID保证智能卡的真实性,持卡人就能访问系统。在使用智能卡时,为了安全起见,许多系统要卡和身份识别码(PIN)同时使用,二者缺一不可。

使用智能卡进行身份认证的优点:智能卡提供的是硬件保护措施和加密算法,较传统的口令鉴别方法更好,安全性能增加;缺点:携带不方便且开户费用较高。

主体特征鉴别:

主体认证技术以人体唯一的、可靠的、稳定的生物特征(如指纹、虹膜、脸部、掌纹等)为依据,采用计算机的强大网络功能和网络技术进行图像处理和模式识别。

主体特征鉴别技术优点:安全性、可靠性和有效性与传的身份认证手段相比产生了质的飞跃,适合安全级别较高的场所;缺点:生物特征信息采集、认证装备的成本较高,人身特征识别软件识别率有待提高。

例程讲解:安装无线网桥

Access数据库安全策略之ASP式WEB安全

放射科安全防护管理规章制度

实验室安全与防护心得体会

仓库安全防护措施有哪些

Apache防止攻击WEB安全

网络防御技术安全防护论文

关于mcafee的进程了解WEB安全

网络安全防护

讲解范文

例程讲解Web数据库安全防护(推荐7篇)

欢迎下载DOC格式的例程讲解Web数据库安全防护,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档