Web 应用开发时应该注意到的安全问题
后台所有程序页面需要做授权验证
如果未经过成功登录,不允许访问任何一个后台程序页面。如果用Session验证,Session有效期不可以太长,建议为15分钟。
成功登陆后的用户,需要验证是否有某个操作的权限。
关键信息需要加密
对于密码、会话令牌等关键信息,需要进行加密后再保存到数据库,不允许用明文方式。一般采用MD5加密方式。
配置文件安全
程序中的配置文件(重点是数据库连接配置)需要重点进行安全保护,配置文件不能允许用户直接访问,配置文件的文件扩展名不能为.inc、.txt,必须为可执行脚本扩展名,如.asp、.php、.jsp、.aspx…
数据库安全
数据库文件需要重点安全保护,对于使用access数据库的程序,不可以允许数据库直接可以通过浏览器下载,数据库文件的路径和文件名称需要不易猜测到,数据库文件的扩展名不能为.mdb。可以设置服务器来禁止此类型的文件下载。
使用“最低权限”限制数据库用户的权限。如果使用SQL SERVER或MySQL数据库,可以考虑只给浏览用户以读权限,后台用户以读、写及删权限。
资源的释放
程序中的使用了关键资源后,必须进行显式释放和关闭,尤其是数据库连接、文件句柄等资源。
防止过分详细的错误提示。
攻击者经常会故意输入错误的内容,进而分析系统给出的错误提示信息,从中获取系统信息,发现可能存在的漏洞。
对于使用Access数据库的用户来说,过于详细的错误提示可能会暴露出数据库文件的路径。
友好的操作反馈提示
对于流程性的操作,需要给用户的操作以友好性反馈提示,让用户了解自己的操作是否有问题,问题在什么地方。
例如,会员注册表单,如果用户提交时,忘记填写某些项,可以在该项后以醒目的颜色来提示,提示的显示最好以AJAX技术实现无刷新效果,提高用户体验。
后台的程序对于一些操作,如删除、审核,必须让用户确认一下才可以执行。
不管用户操作成功或失败,都需要给与提示信息。
验证码的使用
对于用户注册、用户登陆、调查问卷、在线反馈、评论等程序,需要加上验证码,防止机器人绕过限制提交垃圾信息。