前端规范 - 前端广义安全规范
前端禁止操作cookie
localstorage、sessionstorage 不缓存业务敏感数据,严禁存储用户名、密码等数据
系统需要安全退出
之前见过很多toB系统,安全退出,仅仅为跳转到登录界面而
缓存类使用 前端禁止操作cookie localstorage、sessionstorage 不缓存业务敏感数据,严禁存储用户名、密码等数据 系统需要安全退出 之前见过很多toB系统,安全退出,仅仅为跳转到登录界面而已,没有清除cookie 安全的做法,应当是调用服务端的安全退出接口,服务端来清除cookie,然后就真的安全了 系统权限过滤注意点 toB系统,需要做权限过滤,需要过滤三层 以某系统的用户管理界面为例,非管理员户看不到这个界面 1、在菜单上过滤,非管理员用户看不到该菜单 2、界面上过滤,如果非管理员用户,获取了用户管理的界面url,直接输入也是需要跳转到403界面的 3、数据过滤,如果非管理员用户,获取了用户管理请求的接口地址,直接通过浏览器访问接口,或者postman之类的请求接口,也应当返回无权限 防止界面前端绕过 前端仅使用样式做权限、限制是有风险的 case1:某界面的操作按钮,无权限的用户仍然可以看到,但是会disabled掉,不可点击。某懂技术的用户,通过浏览器的开发工具,修改了具体的css属性,使按钮可以继续操作 case2:某系统的输入时间,会对可输入的时间范围进行限制,但也可以通过浏览器开发工具修改样式,继续选择到本来不应该选的日期 结论: 1、如果是按钮类的操作,最好无权限就直接不展示。如果需要展示的话,也需要新写一个无功能按钮,与原来有操作功能的按钮进行区分 2、如果是需要控制选择范围的话,需要后端也来做校验 接口禁止返回过多隐私数据 某case:前端需要获取某客户的公司名称,服务端为了省事,直接接口返回了该公司的整体对象信息,包括联系人、联系电话、所在位置等等 类似于如上情况,接口应当做数据过滤,仅返回有用的数据信息 隐私数据需要脱敏 对比较隐私的客户信息,列表展示应当脱敏展示为**网站安全代码,并且为接口直接返回脱敏数据,不能前端来展示 如果需要再查看真实数据,需要调用接口查看数据,此时服务端会有日志记录用户的查看记录 某些接口数据加密 对于一些SDK、小程序、App等接口请求,需要做接口数据加密,对称或非对称的选择,取决于业务需要 金钱类接口,服务端不信任原则 case:某商城app的提交订单接口,被抓包修改了订单金额,然后就可以支付比订单金额少的金钱 是因为服务端信任了前端传输了订单金额,未加校验直接拿来提交 如此敏感的数据,服务端需要自己计算 前端添加明、暗水印 一些数据比较敏感的内部系统,会添加明水印,提醒用户不用截图外传 但明水印一般都是通过dom生成,懂技术的同学,会通过浏览器将明水印修改或者删除掉 因此还需要暗水印,万一数据泄露,也可以追踪追责 不信任外部资源 包括js、css、图片、接口等外部资源,只加载可信任的资源 不使用公司外的第三方cdn地址,即使目前比较稳定的那些知名cdn地址 只加载可信任的iframe 全站前端代码压缩、混淆 避免被外部轻易看出代码逻辑 防止网站被嵌套 如果是toC网站,需要做防嵌套控制,代码也比较简单
总结 其实不止上面的内容,不同的场景会有其余的安全问题,像放爬虫、npm污染,需要不断的去学习总结 (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |