您的位置:首页 > 编程语言 > Java开发

Web开发安全问题简单汇总

2017-10-10 13:45 363 查看

Web开发安全问题简单汇总

本人以Javaweb开发为例简单总结开发过程中可能遇到或者必须要注意的安全性相关问题


问题清单:

一、身份鉴别

1.用户身份鉴别,包括正确区分用户身份、鉴别失败处理、会话鉴别、角色鉴别;

2.弱口令,口令长度、口令组合规则、口令加密传输比对;

3.访问控制,访问控制策略;

二、日志记录与审计

1.数据库操作记录日志;

2.系统业务操作日志,主要包括增删改记录,查询记录审计(ps:统计汇总,数据分析);

3.审计

审计数据产生:用户重要操作记录;对登录失败、注销、越权访问、用户管理、授权管理、配置管理等操作记录;对审计日志操作的记录;记录完整性要求明确记录时间发生时间、行为主体、主体属性、内容、结果;

审计查阅:审计日志要能够独立管理;可以对记录进行排序、分类、统计分析;

审计事件存储:未备份删除、修改尝试、覆盖审计记录;

三、数据安全

1.数据完整性

数据完整性校验:系统重要口令在数据传输过程中的完整性校验;页面交互参数传递过程中的校验;

数据完整性保护:登录、增加、查询等表单数据采取必要验证;

2.数据保密性

数据传输保密性:口令数据传输过程的保密性,可采用商密国密等不同加密等级;对于重要业务数据建议采用非对称加密;

数据存储保密性:对于关键性数据,例如口令信息,数据存储时不得明文存储;

3.备份与恢复

数据库备份与恢复策略应统一规范形成文档加以约束;

四、常见漏洞

1.明文传输漏洞:页面或者系统中出现的用户账户密码等敏感信息进行加密后传输,并且,不建议使用md5等易被破解的加密方式和不要使用base64编码、url编码等方式解决问题。

2.SQL注入漏洞:应用服务器端应对SQL语句中出现的特殊字符进行过滤,例如“and”“or”“;”“–”,禁止向数据库系统提交;

3.XSS跨站脚本漏洞:系统应该对用户提交变量中的代码进行过滤或转换,禁止页面或者url传递的参数中强制增加恶意脚本;

4.敏感信息泄露漏洞:例如泄露中间件版本造成敏感信息泄露;

5.命令执行漏洞:可以执行系统命令漏洞;

6.会话重放攻击:可以通过抓取http包固定账号破解密码或者抓取密码破解对应账号;

7.CSRF(跨站请求伪造)漏洞:程序重要操作的url、表单数据均可以被完整构造,对于发起的url的用户来源进行检查;

8.风险服务或者端口:系统存在风险的无关服务和端口;

9.不安全的cookie:在cookie中包含明文敏感信息;cookie中显示用户名密码等属性(ps:部分信息的键名过于明显体现其作用);

10.默认口令/弱口令:用户密码弱口令;

11.越权访问:不同权限账户间的功能存在越权访问;不应出现admin、administrator、system等标示的高级管理员账户;不应出现拥有所有权限的超级管理员账户,应做到合理权限分配;

12.其他漏洞:不安全的http请求方法;应该过滤http请求类型,如果没有其他类型需求的特殊业务,应将post和get之外的请求进行禁止;

五、其他

1.软件容错:数据类型校验、数据格式有效性验证;对获取的数据可能出现的各种情况进行判断和预判,避免出现数据格式异常导致系统崩溃;特殊操作或者不正确的操作顺序可能造成的软件功能错误;

2.资源控制:用户会话超时不应放到前台配置;用户会话超时处理;重要配置文件不用前台配置或者明文存储;

3.异常检测:系统出现的错误不应抛出到页面,应该自己定义exception进行封装,避免错误信息泄露系统框架或者系统结构等关键信息;优化异常显示页面,例如重写404500等页面;对系统异常事件定级响应,像登录失败、越权访问、IP地址异常等异常事件进行有效警告和相应处理;

4.端口安全:系统的正式发布不应再使用8080端口这种高危端口;更换默认端口、关闭web管理控制台、限制页面源码全部暴露、及时更新安装包或者修补补丁;如有必要,对于web应用可以禁止右键操作。

对于问题解决方案,有些在开源系统都有对应的解决方案,自己百度,有些处理涉及企业安全,请自行研究对应的专属的解决方案;
个人技术和经历有限,仅供大家参考,如有补充可以私信交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息