当前位置:网站首页>web安全
web安全
2022-07-05 10:21:00 【码小龙.】
web安全
前言
以下总结的为前端常见的安全常识,也是面试必问的。没有大的技术含量,但需要知道。我们在自己的应用开发中,也需要避免这样的低级问题。
sql注入
描述
就是后端依赖前端返回的参数直接拼接sql进行查询数据,导致sql不正常的拼接,造成的安全问题。
解决方案
对前端传递的信息进行层层校验,不直接使用。
备注:由此延伸到,其实任何前端的传递数据都可能是有风险的、不严谨的,因此后端的任何接口针对传递参数都要进行非法校验,业务校验,然后才能实际使用。
XSS(Cross Site Scripting,跨站脚本攻击)
描述
简单来讲就是通过某种方式向你的代码中注入js代码,最常见的是通过表单的提交。然后因为这些代码与你的代码具有同等的权限,因此可以访问到你的数据信息,也可以进行一些数据的上报。因此,危害是很大的。
解决方案
针对一些输入的内容进行替换:
& 替换为:&
< 替换为:<
替换为:>
” 替换为:"
‘ 替换为:’
/ 替换为:/
另外针对性的对cookie加强控制,设置http-only,这样js就获取不到cookie的内容。
但是,针对富文本内容,简单的文本替换并不能解决问题,可以通过csp的方式解决,也就是建立白名单。
设置 HTTP Header 中的 Content-Security-Policy
设置 meta 标签的方式
如果是http,header的话,设置可以是这样:Content-Security-Policy: default-src ‘self’,这样就是只允许本网站的资源了。
CSRF(Cross-site request forgery,跨站请求伪造)
描述
CSRF 是借用了当前操作者的权限来偷偷地完成某个操作,而不是拿到用户的信息。
其借助的原理是:cookie的同源策略,只要登录之后,同域名的请求都不需要进行用户的验证。
解决方案
针对需要进行校验的操作,设置额外的验证,比如验证码、密码、指纹等;
get请求改为post请求,更加安全;让get请求更多的只负责读操作;
验证document.referer,判断网页的上一个页面来源,微信支付就有这个验证的机制;
token时效性机制,在进行某操作时,发送一个时效性的token,在进行某操作后续操作时,验证token是否相同;
验证网络ip,因为如果是非本机设备发起的请求,那么ip也会相比原来的ip是不同的,通过ip的对比也可以去除不安全的因素。
网页嵌套攻击
描述
通过iframe嵌套网站的页面,然后设计嵌套透明化,通过界面点击时,触发自己的事件。
解决方案
第一种: header设置不允许嵌套
X-FRAME-OPTIONS 是一个 HTTP 响应头,在现代浏览器有一个很好的支持。这个 HTTP 响应头 就是为了防御用 iframe 嵌套的点击劫持攻击。
该响应头有三个值可选,分别是
DENY,表示页面不允许通过 iframe 的方式展示
SAMEORIGIN,表示页面可以在相同域名下通过 iframe 的方式展示
ALLOW-FROM,表示页面可以在指定来源的 iframe 中展示
第二种:我们可以通过简单的js去判断当前界面是不是顶层窗口就可以解决这种问题了。
if(top.location!=self.location){
top.location.href = window.location.href;
}else{
alert(“是顶层窗口”);
}
中间人攻击
描述
也就是请求被拦截,然后可能被改写,或者被抽取重要信息,继续继续请求
解决方案
简单有效的:升级https方案
边栏推荐
- 双向RNN与堆叠的双向RNN
- 到底谁才是“良心”国产品牌?
- Flink CDC cannot monitor MySQL logs. Have you ever encountered this problem?
- Solution to the length of flex4 and Flex3 combox drop-down box
- Interview: is bitmap pixel memory allocated in heap memory or native
- Qt实现json解析
- Lepton 无损压缩原理及性能分析
- [observation] with the rise of the "independent station" model of cross-border e-commerce, how to seize the next dividend explosion era?
- uniapp
- Have you learned to make money in Dingding, enterprise micro and Feishu?
猜你喜欢
Comparative learning in the period of "arms race"
Events and bubbles in the applet of "wechat applet - Basics"
AtCoder Beginner Contest 258「ABCDEFG」
LSTM应用于MNIST数据集分类(与CNN做对比)
AtCoder Beginner Contest 258「ABCDEFG」
[vite] 1371 - develop vite plug-ins by hand
非技術部門,如何參與 DevOps?
学习笔记5--高精地图解决方案
非技术部门,如何参与 DevOps?
Apple 5g chip research and development failure? It's too early to get rid of Qualcomm
随机推荐
Shortcut keys for vscode
Learning II of workmanager
SqlServer定时备份数据库和定时杀死数据库死锁解决
LSTM应用于MNIST数据集分类(与CNN做对比)
IDEA新建sprintboot项目
Excerpt from "sword comes" (VII)
Completion report of communication software development and Application
uniapp + uniCloud+unipay 实现微信小程序支付功能
dsPIC33EP 时钟初始化程序
What are the top ten securities companies? Is it safe to open an account online?
沟通的艺术III:看人之间 之倾听
【js学习笔记五十四】BFC方式
5G NR系统架构
2022年化工自动化控制仪表考试试题及在线模拟考试
ByteDance Interviewer: how to calculate the memory size occupied by a picture
ModuleNotFoundError: No module named ‘scrapy‘ 终极解决方式
LiveData 面试题库、解答---LiveData 面试 7 连问~
A large number of virtual anchors in station B were collectively forced to refund: revenue evaporated, but they still owe station B; Jobs was posthumously awarded the U.S. presidential medal of freedo
Flink CDC cannot monitor MySQL logs. Have you ever encountered this problem?
【tcp】服务器上tcp连接状态json形式输出