当前位置:网站首页>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方案
边栏推荐
- Shortcut keys for vscode
- Detailed explanation of the use of staticlayout
- 爬虫(9) - Scrapy框架(1) | Scrapy 异步网络爬虫框架
- Pseudo class elements -- before and after
- ByteDance Interviewer: how to calculate the memory size occupied by a picture
- What is the most suitable book for programmers to engage in open source?
- 2022年T电梯修理操作证考试题及答案
- SLAM 01.人类识别环境&路径的模型建立
- 微信核酸检测预约小程序系统毕业设计毕设(8)毕业设计论文模板
- Learning note 4 -- Key Technologies of high-precision map (Part 2)
猜你喜欢

微信核酸检测预约小程序系统毕业设计毕设(7)中期检查报告

pytorch输出tensor张量时有省略号的解决方案(将tensor完整输出)

What is the origin of the domain knowledge network that drives the new idea of manufacturing industry upgrading?

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

Blockbuster: the domestic IDE is released, developed by Alibaba, and is completely open source!

【黑马早报】罗永浩回应调侃东方甄选;董卿丈夫密春雷被执行超7亿;吉利正式收购魅族;华为发布问界M7;豆瓣为周杰伦专辑提前开分道歉...

2022年危险化学品生产单位安全生产管理人员特种作业证考试题库模拟考试平台操作

Usage differences between isempty and isblank

【观察】跨境电商“独立站”模式崛起,如何抓住下一个红利爆发时代?

How do programmers live as they like?
随机推荐
[论文阅读] KGAT: Knowledge Graph Attention Network for Recommendation
Golang应用专题 - channel
Idea create a new sprintboot project
2022年化工自动化控制仪表考试试题及在线模拟考试
mongoDB副本集
《天天数学》连载58:二月二十七日
AtCoder Beginner Contest 254「E bfs」「F st表维护差分数组gcd」
What are the top ten securities companies? Is it safe to open an account online?
How did automated specification inspection software develop?
[observation] with the rise of the "independent station" model of cross-border e-commerce, how to seize the next dividend explosion era?
Timed disappearance pop-up
LSTM应用于MNIST数据集分类(与CNN做对比)
C#实现获取DevExpress中GridView表格进行过滤或排序后的数据
Apple 5g chip research and development failure? It's too early to get rid of Qualcomm
dsPIC33EP 时钟初始化程序
SQL Server 监控统计阻塞脚本信息
[vite] 1371 - develop vite plug-ins by hand
Comparative learning in the period of "arms race"
Glide advanced level
ConstraintLayout的流式布局Flow