原文地址:http://kk-kingboy.blog.163.com/blog/static/55354561200911313145623/javascript
因为网站被黑的状况较多,如下总结网站应用方面须要注意的安全问题:php
表单数据验证
在数据被输入程序前必须对数据合法性的检验。非法输入问题是最多见的Web应用程序安全漏洞。
须要作到:对任何输入内容进行检查。接受全部能够接受的内容,拒绝全部不能接受的内容。
全部提交的表单数据,都必须验证两次,即提交前在客户端用Javascript验证,提交后在服务器端用脚本再次验证,保证数据的合法性。尤为是对于必填项,不只须要同时在客户端和服务端验证是否作了输入,还要验证输入的数据格式是否正确。须要注意:在客户端上的Javascript验证并非真正意义上的检查。好比恶意用户很容易在本身的终端上禁用脚本执行,从而防止客户端的内容检查脚本运行,使得他能够输入恶意代码并成功地提交表单。对于图像上传功能,须要验证上传图像的格式及大小是否合乎要求。java
防范SQL语句注入攻击
程序须要对全部从外部接收到的数据进行过滤,防止恶意攻击。主要防范的字符有“'|script|exec|insert|select|delete|update|count|chr|mid|master|truncate|declare”。
使用积极的过滤而不是消极的过滤。 换句话说,就是检查应该输入什么,而不是检查不该该输入什么。正则表达式
只规定哪些内容不该该输入,会留下太多的漏洞。由于有不少内容都不该该被输入。积极的过滤方式应该包括:
? 是否为空(须要去掉空格后判断)
? 是不是正确的数据类型 (字符串,整数等)
? 是否要求带有参数
? 字符编码是否容许
? 输入内容是否达到了内容长度的最大或者最小界限
? 是否容许输入空值
? 若是应该输入数字,那么肯定数字大小的范围。
? 输入内容是否形成了数据重复,若是是,判断这种状况是否能够接受。
? 输入内容是否符合格式要求(好比是否采用正则表达式)
? 若是是经过下拉列表选取的内容,确保其包含了有效的值数据库
地址栏变量须要进行验证
对于从地址栏上接收到的变量,必需要验证其合法性。例如,若是从地址栏上收到了文章ID值,则须要验证ID是否为数字,是否有攻击字符等。浏览器
跨站攻击的预防
在验证提交的数据时,为防止跨站攻击 ,能够检查上一个页面是否为本站,另外,过滤<iframe>、<javascript>、<alert>,重点把“<”替换为“<”,把 “>”替换为“>”安全
目录和文件夹的安全
用户只能访问网站目录下的内容,确保用户不能访问网站目录之外的目录。
程序中涉及文件包含的地方,要确认全部包含的文件的位置正确。为了防止非法包含文件,应特别当心“./”或“../”的使用。服务器
后台全部程序页面须要作受权验证
若是未通过成功登陆,不容许访问任何一个后台程序页面。若是用Session验证,Session有效期不能够太长,建议为15分钟。
成功登录后的用户,须要验证是否有某个操做的权限。jsp
关键信息须要加密
对于密码、会话令牌等关键信息,须要进行加密后再保存到数据库,不容许用明文方式。通常采用MD5加密方式。网站
配置文件安全
程序中的配置文件(重点是数据库链接配置)须要重点进行安全保护,配置文件不能容许用户直接访问,配置文件的文件扩展名不能为.inc、.txt,必须为可执行脚本扩展名,如.asp、.php、.jsp、.aspx…
数据库安全
数据库文件须要重点安全保护,对于使用access数据库的程序,不能够容许数据库直接能够经过浏览器下载,数据库文件的路径和文件名称须要不易猜想到,数据库文件的扩展名不能为.mdb。能够设置服务器来禁止此类型的文件下载。
使用“最低权限”限制数据库用户的权限。若是使用SQL SERVER或MySQL数据库,能够考虑只给浏览用户以读权限,后台用户以读、写及删权限。
资源的释放
程序中的使用了关键资源后,必须进行显式释放和关闭,尤为是数据库链接、文件句柄等资源。
防止过度详细的错误提示
攻击者常常会故意输入错误的内容,进而分析系统给出的错误提示信息,从中获取系统信息,发现可能存在的漏洞。对于使用Access数据库的用户来讲,过于详细的错误提示可能会暴露出数据库文件的路径。
友好的操做反馈提示
对于流程性的操做,须要给用户的操做以友好性反馈提示,让用户了解本身的操做是否有问题,问题在什么地方。例如,会员注册表单,若是用户提交时,忘记填写某些项,能够在该项后以醒目的颜色来提示,提示的显示最好以AJAX技术实现无刷新效果,提升用户体验。后台的程序对于一些操做,如删除、审核,必须让用户确认一下才能够执行。无论用户操做成功或失败,都须要给与提示信息。
验证码的使用对于用户注册、用户登录、调查问卷、在线反馈、评论等程序,须要加上验证码,防止机器人绕过限制提交垃圾信息。