您的浏览器不支持JavaScript语法,但是并不影响您获取本网站的内容 网页设计,网页设计公司,网页程序设计,网站程序设计,台北网页设计,无障碍网页设计,3d互动网页设计, 720度环场,网站建置,主机代管,电子商务,政府机关网页设计,公家机关网页设计,网站制作公司
网页设计,网页设计公司,网页程序设计,网站程序设计,台北网页设计,无障碍网页设计,3d互动网页设计, 720度环场,网站建置,主机代管,电子商务,政府机关网页设计,公家机关网页设计,网站制作公司
网页设计程序设计网站规划虚拟主机与主机代管关于网绎我们的服务我们的客户无障碍网页网站优化SEO联络我们
网页设计,网页设计公司,网页程序设计,网站程序设计,台北网页设计,无障碍网页设计,3d互动网页设计, 720度环场,网站建置,主机代管,电子商务,政府机关网页设计,公家机关网页设计,网站制作公司
Logo 排版用图片
:::回首页网站地图繁体中文ENGLISH日本语rss
:::
关于网绎
我们的客户
我们的服务
无障碍网页
SEO网站优化
信息与知识库
联络我们
关于网绎装饰用图片
无障碍网页的专家
透过网绎将您的网站轻松的通过无障碍网页检测标准,达到转换网页无障碍,扩充单元无障碍,新增内容无障碍的功能。
:::
信息与知识库
标题 网站容易遭受的攻击模式-SQL Injection、XSS、伪造发送端、机器人发送
主题分类 系统与程序设计
原文章出处 網繹數位科技 KEVIN LIN

SQL Injection-SQL隐码,若直翻成中文就是SQL注射
注射什么呢?
注射SQL的程序,也就是T-SQL,T-SQL是SQL数据库中的程序语言,或说SQL语言,然后黑客就可以执行一些想要在数据库中做的事情。
会受到SQL Injeciton攻击的,其实绝对不只有微软的ACCESS、MS-SQL。其实只要是关连式数据库,只要是采用SQL标准的数据库,如MySQL、Oracle等,都能够用SQL Injection攻击。只还是一个老问题,微软未必弱点真的比较多,而是使用者族群比较大,所以黑客喜欢找微软的系统下手,波及力也比较强,攻击起来比较有成就感。当然这一点就会是许多管理者敬微软而远之的原因之一。

黑客最常利用SQL Injection漏洞来查询数据库,找寻有没有些有用的数据,或在SQL数据库中增加一些数据
如果这个是网站背后的数据库,那他会增加<script src= 或 <iframe 等等HTML Tag之类的数据
当这些新增加的数据,被网页程序以正常的运作流程,抓取到到网页上呈现时,就能对浏览者达到XSS的攻击
另一种则是纯粹破坏数据,不过这个比较少人做。还有一种是利用数据库中的强大功能,如xp_cmdshell等,去进而掌控整台Server,可以对整台Server的硬盘进行数据查找、修删(所以最好把MS-SQL Server上的xp_cmdshell给关闭)。
另外一点,绝对不要在AP或网页程序上使用最大权限的使用者账户来操作数据库,因为如果真的不幸被入侵,那黑客有的就是最大权限,可以对所有的数据库操作,到时受害的就不只是单一数据库而已。


XSS攻击比较危险的是,如果攻击到的位置恰到好处,则网站业主跟浏览者,可能很久很久以后才会发现该网站被植入XSS攻击语法。可怕的是这段没人发现的时间里,已经不知道多少人被这中XSS的网站攻击

XSS与SQL Injection彼此间没有直接关连,但通常是很容易连带发生
XSS的攻击容易利用SQL Injection去达成
XSS的方式是利用某些HTML本身具有的功能,如主动连结某一个外部网站、主动执行某些程序的特性
XSS攻击一定要包含一个跳板才能成功,而这个跳板就是Web Server,黑客先要想办法在这台WebServer上的网页安插上述的那串HTML码,安插成功后,当有任何一个浏览者开启该网站被植入特殊HTML码的网页后,浏览者端就会神不知鬼不觉得连结上黑客指定好的外部网站,而这个网站就会让该浏览者的计算机安装木马程序,或执行可能泄漏浏览者计算机数据等等为所欲为的动作了。


伪造发送端的攻击
网页程序最基本的运作模式,即为发送、接收,比方说网址后带参数的方式,就是一种发送方式,或是窗体中的input submit到另外一个网页程序处理,这些都是发送资料的动作。这个机制下有问题的部分是在于接收端没有检查发送端是否是合法,也就是接收端并未确认发送端的身份,即接收数据,并处理。在这种状况下,黑客即可伪造发送端,并略过原先发送端会有的java script等数据检查,成功将有问题的数据送到接收端,并进入数据库等,此时网站管理者就会发现多了很多垃圾数据。这种状况在传统的网页程序语言都可能发生。


机器人发送,就是非人本身操作,而是使用一段由黑客指定好或录制好的动作,不断对同一个网站的某一个位置,进行填写数据、送数据的动作。通常里面的数据都会呈现无规则性,但密集的发送,产生大量的数据对网站运作及管理者产生困扰。


至于防范方法
SQL Injection的最大弱点是在于早期网页程序,喜欢用组合字符串的方式,组成T-SQL语法进数据库执行。
因为组合字符串的是缺乏格式的,所以可以使用T-SQL特殊字符去轻易破坏它,使的原先语法部分失效,
所以应该要在网页程序上预先防范T-SQL内的危险字符。不过这个只是治标不治本。
而最安全又最省力的方式,如果数据库有Store Procedure这功能可以使用的话,强烈建议使用
因为透过Store Procedure方式去执行T-SQL,因为Store Procedure是程序设计师预先设计好的数据库程序,是经过格式过的,所以没有组合字符串的问题,即使没有在网页程序上过滤危险字符,危险性的T-SQL语法也绝对无法成功执行。
另一点好处,这牵涉到数据库的管理,可以将数据库设计成网页仅有执行Store Procedure的权限,而无直接存取table权限。这样做可以将数据库的安全性更为提升,对于一些有细部管理需求的单位更适合使用。

XSS攻击的防范,最佳的方式是把所有网页的input对象,在程序接收时,全部将「<」「>」给置换掉,改以html替代字代替;或是在要显示数据时时,将< >换成html替代字,这样两种方式都可以让< >就无法在网页上生效,进而达到防堵XSS对浏览者的攻击。
顺便说明,ASP.net其本身的input对象默认值,都是将html tag视为危险输入,所以当有人在ASP.net网站上输入任何html tag时,ASP.net就会响应错误讯息。不过这功能是可以在开发时期被关闭的,在此状况下,XSS攻击可能就有机可趁,网页程序设计师要记得过滤危险字符。

伪造发送端的攻击,应该在接收页即检查发送端是否合法,一般作法是检查发送端的网址是否与接收端为同一个网站。还有程序开发时,建议除了浏览者端的java script检查外,也可以在接收程序上做相同的数据检查动作,这样也能大幅降低攻击成功的可能性。另外若是以ASP.net开发的,则比较不会有此问题,因为ASP.net采用以往不同的背景运作架构,可大幅避免这类问题,相对安全。

机器人发送的防范,一般会采用现在很常见的验证码,图形的验证码,或一段随机数更换的逻辑运算,比方2+5=? 天空是什么颜色等等,需要人类思考才能回答的问题。用这些来阻挡机器发送。另外还有一些是用程控多久可以发送一次数据,少于时间内是不允许发送数据出来的。不过这部分对于无障碍网页,容易造成开发的困难,所以也有另外使用语音等方式。

文章整理:
关键词: SQL Injection , XSS , Store Procedure

go to top
通过第三优先等级无障碍网页检测
   
网绎数码科技网页设计 地址:台北市复兴南路一段321号3楼 Tel: (02)2704-1758(代表号) Fax: (02)2704-0372 Email:e-service@eki.com.tw
网页设计程序设计网站规划虚拟主机与主机代管关于网绎我们的服务我们的客户无障碍网页网站优化SEO联络我们