当前位置:网站首页>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方案
边栏推荐
- ConstraintLayout官方提供圆角ImageFilterView
- 微信核酸检测预约小程序系统毕业设计毕设(6)开题答辩PPT
- 请问postgresql cdc 怎么设置单独的增量模式呀,debezium.snapshot.mo
- Interview: how does the list duplicate according to the attributes of the object?
- How do programmers live as they like?
- Learning Note 6 - satellite positioning technology (Part 1)
- SQL Server 监控统计阻塞脚本信息
- Usage differences between isempty and isblank
- 双向RNN与堆叠的双向RNN
- Activity enter exit animation
猜你喜欢

学习笔记4--高精度地图关键技术(下)
![[paper reading] kgat: knowledge graph attention network for recommendation](/img/fa/d2061bc7bd437f062d46a009cf32cf.png)
[paper reading] kgat: knowledge graph attention network for recommendation

IDEA新建sprintboot项目

How did automated specification inspection software develop?

AtCoder Beginner Contest 254「E bfs」「F st表维护差分数组gcd」

AtCoder Beginner Contest 258「ABCDEFG」

学习笔记5--高精地图解决方案

Idea create a new sprintboot project

微信核酸检测预约小程序系统毕业设计毕设(8)毕业设计论文模板

Constrained layout flow
随机推荐
非技術部門,如何參與 DevOps?
WorkManager的学习二
Timed disappearance pop-up
How to write high-quality code?
到底谁才是“良心”国产品牌?
NCP1342芯片替代料PN8213 65W氮化镓充电器方案
Excerpt from "sword comes" (VII)
Constraintlayout officially provides rounded imagefilterview
Apple 5g chip research and development failure? It's too early to get rid of Qualcomm
Interview: is bitmap pixel memory allocated in heap memory or native
Should the dependency given by the official website be Flink SQL connector MySQL CDC, with dependency added
Today in history: the first e-book came out; The inventor of magnetic stripe card was born; The pioneer of handheld computer was born
What is the most suitable book for programmers to engage in open source?
In the year of "mutual entanglement" of mobile phone manufacturers, the "machine sea tactics" failed, and the "slow pace" playing method rose
[paper reading] kgat: knowledge graph attention network for recommendation
pytorch输出tensor张量时有省略号的解决方案(将tensor完整输出)
Qt实现json解析
学习笔记6--卫星定位技术(上)
C语言实现QQ聊天室小项目 [完整源码]
TypeError: Cannot read properties of undefined (reading ‘cancelToken‘)