系统安全
SQL注入
- 做输入校验
- 使用预编译SQL语句执行
- mybatis的#和$符号的选用
XSS跨站点脚本攻击
获取用户cookie往服务端操作
- 反射型
- 存储型
预防:
1.做输入校验、替换:去掉包含的html代码
2.设置cookie为http-only访问方式:保护用户cookie,通过脚本无法获取到用户的cookie只能再次请求才能获取到cookie
CSRF 跨站点请求攻击
触发跨站请求:获取不到用户cookie,利用用户的浏览器打开链接发起请求
预防:
1.cookie hash
2.web token
容器化部署
docker的核心技术是什么
- NameSpace命名空间,隔离进程,用户组,网络,IPC以及UTS等的基础;不同的docker运行在不同的命名空间里
- CGroups控制组限制硬件资源
- UnionsFS做了镜像管理
容器docker与虚拟机的区别
- docker是进程与虚拟机是整个操作系统
改造应用变docker部署
-
先安装mysql(一般不使用docker部署mysql环境)
$ docker pull mysql:5.6(拉取mysql的镜像)
$ docker run -itd --name mysql5.6 -p 3309:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.6(这里注意外层宿主机3309通过虚拟网桥映射到docker内部的3306,可能需要先用rm扫除之前的安装)
本地访问 /usr/local/mysql/bin/mysql -uroot -h localhost:3309 -p
初始化mysql -
安装zookeeper
docker pull zookeeper:3.5(拉取镜像)
docker run -itd --name zk -p 2183:2181 zookeeper:3.5(同样做端口映射) -
安装网络工具(完成内外的网络通讯)
apt-get update
apt-get install net-tools
apt install iputils-ping(使ping有效) -
应用部署’
首先把能改的配置,值修改成变量
Dockerfile
FROM java:8
COPY ./target/yingyong.jar app.jar
RUN bash -c “touch /app.jar”
CMD [“-jar”,“app.jar”]
ENTRYPOINT[“java”]
打镜像
docker build -t yingyong .
启动服务端(若已启动,使用“docker stop 内容id” 关闭)
docker run -itd -p 8881:8080 -p 28881:80880 --env ServerPort=8080 --env Mysql_Host_And_Port=10.93.45.85:3309 --env
Mysql_User=root --env Mysql_Password=root --env Zookeeper_Host_And_Port=10.93.45.85:2183 --env Dubbo_Port=20880 yingyong
客户端
docker build -t yingyongclient .
启动客户端
docker run -itd -p 8882:8080 --env ServerPort=8080 --env Mysql_Host_And_Port=10.93.45.85:3309 --env
Mysql_User=root --env Mysql_Password=root --env Zookeeper_Host_And_Port=10.93.45.85:2183 --env yingyongclient