相信大家对安全架构设计都不陌生,特别是在现在这个互联网特别发达的时代,随着互联网的不断发展,网络安全问题日益严重,成为企业和个人的重要挑战。安全架构设计是一门重要的技术领域,涉及到保护网络资源和信息的安全性。本文将从多个角度深入探讨安全架构设计方案可行性
1.微信小程序数据传输加密验签方案
微信小程序端使用了微信小程序的加固SDK
, 对前端代码进行了混淆. 在小程序的数据传输过程中,前后端使用了AES
对称加密传输。
2.用户后台登录口令限制及安全存储方案
用户登录密码验证
用户登录时,采用数据传输加解密方案在服务端得到明文的用户名和密码,然后使用算法获取用户名摘要,然后通过用户名查询出用户的密码摘要进行对比,如果一致登录成功,如果失败提示用户名或密码错误
用户密码长度检查
在用户设置密码时,检查用户口令长度不能小于8位,且必须包含大小写字母和特殊字符。
用户密码使用周期限制
系统强制要求用户在使用一段时间(如90天)更换密码,且新的密码不能是以前使用过的密码。
登录信息自动过期
用户在系统中长时间无操作时,系统将用户的登录信息自动过期,用户登录信息过期后再操作系统提示用户登录信息过期并返回登录页面提示用户重新登录
3.敏感配置信息加解密方案
系统会对配置密码等安全级别较高的敏感进行加密存储,如数据库账号密码、Redis
密码等。系统在配置文件中对password
字样的配置项进行别名替换,并对敏感信息进行加密
4.文件上传下载及文件存储安全方案
文件上传安全方案
系统禁止前端直接指定文件上传的绝对路径,需要在后台设置文件上传的父路径白名单
系统针对上传文件的扩展名,设置白名单;并根据文件的文件头进行实际格式的校验,防止篡改文件后缀名绕过白名单限制。
系统对于上传的文件进行大小限制
文件上传后,对于需要本地存储的文件,会对文件命名随机化,防止被枚举而下载。
文件下载安全方案
系统针对文件下载时,提供专门的接口进行对应的文件下载
系统禁止客户端直接指定文件下载的绝对路径,需要在后台设置文件下载允许的路径白名单,并对下载的文件名称提供下载别名,防止用户根据实际文件名称遍历下载其他文件,并对文件下载权限进行限制。
5.防止数据越权访问安全方案
系统针对用户可访问的菜单、页面资源和api
接口进行权限限制,系统在创建用户时可对用户可操作的菜单、页面资源和api
接口进行权限分配。
用户在有权限范围内的菜单、页面资源和api
接口可以正常操作后访问,对于无权限的操作进行无操作权限提示
系统针对需要权限控制的数据进行权限控制,系统可针对不同的用户进行不同的数据查看权限,如某机构的用户只能查看其机构及其下属机构的数据权限。用户无法查询不属于其机构的数据。
6.防范SQL注入、XSS跨站脚本、路径遍历安全方案
防范SQL注入
过滤危险字符:union,sleep
预编译语句:存储过程、JDBC prepareStatement
参数化查询:Hibernate
、MyBatis
在进行JDBC
操作时,使用PreparedStatement
进行sql
执行,避免直接使用Statement
执行sql
在使用mybatis
时使用#{xxxx}
进行参数设置,避免使用${xxxx}
进行参数设置
使用sql
过滤工具对客户端传入的数据进行sql
注入检查,对于可能存在风险的数据进行安全提示
防范XSS跨站脚本
系统在数据入口处设置拦截器拦截请求数据,并对请求数据使用XSS
脚本转义工具commons-lang
包下的StringEscapeUtils
工具进行处理
防范路径遍历
系统会针对客户端提交过来的文件名进行硬编码或者统一编码,过滤非法字符。
系统对文件路径的前缀和后缀和进行白名单控制,对包含了恶意的符号或者空字节进行拒绝。
7.页面防止复制、粘贴、打印、截屏安全方案
防止复制、粘贴
系统在页面设置元素的onselectstart
事件,返回false
禁止页面数据被选择
系统在页面设置元素的oncopy
事件,返回false
禁止页面数据被复制
系统在页面设置元素的oncut
事件,返回false
禁止数据剪切
系统通过监听页面onkeydown
事件,禁止CTRL+C和CTRL+V
防止打印
系统引入NoPrint.js
库,可以设置页面禁止打印
防止截屏
系统针对敏感信息页面可以设置水印,水印内容为当前用户信息+当前时间,用户对系统页面进行截图会带上其个人信息的水印,在敏感信息被泄露时可以追溯到对应的责任人,水印也可以提高操作用户对敏感信息的保密意识。
8.全站统一报错处理方案
统一异常信息处理
系统针对异常信息进行统一分类,并通过全局异常处理机制对异常进行统一处理,对于可能泄露信息的sql
错误堆栈信息、系统运行异常信息等进行统一处理,不返回异常堆栈信息给页面。
统一报错页面处理
系统针对错误页面403
、404
、500
等页面进行统一处理,系统不返回中间件默认的错误页面,系统会根据不同的错误类型页面提供美观的页面,并在错误页面提供返回首页或返回登录页的按钮。
Thank you for reading.
推荐阅读
• 前端埋点
欢迎关注我的公众号“全栈开发ck”,原创技术文章第一时间推送。