JAVA开发(web常见安全漏洞以及修复建议)

web安全常见漏洞

修复建议:

SQL注入规避

代码层最佳防御sql漏洞方案:使用预编译sql语句查询和绑定变量。

(1)使用预编译语句,使用PDO需要注意不要将变量直接拼接到PDO语句中。所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。

(2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。

(3)确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。

(4)数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。

(5)网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。

(6)严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。

(7)避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。

(8)过滤危险字符,例如:采用正则表达式匹配union、sleep、and、select、load_file等关键字,如果匹配到则终止运行。

XSS漏洞修复

xss漏洞本质上是一种html注入,也就是将html代码注入到网页中。那么其防御的根本就是在将用户提交的代码显示到页面上时做好一系列的过滤与转义

(1)过滤输入的数据,对例如:“ ‘ ”,“ “ ”,” < “,” > “,” on* “,script、iframe等危险字符进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。

(2)不仅验证数据的类型,还要验证其格式、长度、范围和内容。

(3)不仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。

(4)对输出到页面的数据进行相应的编码转换,如HTML实体编码、JS编码等。对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行检查。

文件上传:

1、对上传文件类型进行验证,除在前端验证外在后端依然要做验证,后端可以进行扩展名检测,重命名文件,MIME类型检测以及限制上传文件的大小等限制来防御,或是将上传的文件其他文件存储服务器中。

2、严格限制和校验上传的文件,禁止上传恶意代码的文件。同时限制相关上传文件目录的执行权限,防止木马执行。

3、对上传文件格式进行严格校验,防止上传恶意脚本文件;

4、严格限制上传的文件路径。

5、文件扩展名服务端白名单校验。

6、文件内容服务端校验。

7、上传文件重命名。

  1. 隐藏上传文件路径。

目录遍历

对传入的文件名参数进行过滤,并且判断是否是允许获取的文件类型,过滤回溯符…/。

弱口令:

1、强制用户首次登录时修改默认口令,或是使用用户自定义初始密码的策略;

2、完善密码策略,信息安全最佳实践的密码策略为8位(包括)以上字符,包含数字、大小写字母、特殊字符中的至少3种。

  1. 增加人机验证机制,限制ip访问次数。

越权访问:

1、对用户访问角色的权限进行严格的检查及限制。

  1. 在一些操作时可以使用session对用户的身份进行判断和控制

使用Docker出现的安全漏洞修复

审核Docker文件和目录

在/etc/audit/audit.rules与/etc/audit/rules.d/audit.rules文件中添加以下行:

-w/var/lib/docker -k docker

-w/etc/docker -k docker

-w/usr/lib/systemd/system/docker.service -k docker

-w /usr/lib/systemd/system/docker.socket-k docker

-w/usr/bin/docker-containerd -k docker

-w/usr/bin/docker-runc -k docker

然后,重新启动audit程序:

service auditd restart

限制容器之间的网络流量

在/usr/lib/systemd/system/docker.service文件中的`ExecStart`参数添加 `--icc=false`选项,然后重启docker服务:

systemctldaemon-reload

systemctlrestart docker

为Docker启用内容信任

要在bash shell中启用内容信任,请输入以下命令:`exportDOCKER_CONTENT_TRUST=1`

或者,在您的配置文件中设置此环境变量,以便在每次登录时启用内容信任。

内容信任目前仅适用于公共Docker Hub的用户。 当前不适用于Docker Trusted Registry或私有注册表。

限制容器的内存使用量

仅使用所需的内存来运行容器。始终使用'--memory'参数运行容器。 您应该按以下方式启动容器:

docker run--interactive --tty --memory 256m <Container Image Name or ID>

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值