前端面试知识点大全——web安全篇

总纲:前端面试知识点大全

目录

1.xss(跨站脚本攻击)

1.1 概念

1.2 防御手段

2.csrf(跨站请求伪造)

2.1 概念

2.2 CSRF防御

3. SQL注入

3.1 概念

3.2 防御手段

4.DDOS

4.1 概念

4.2 例子

4.3 解决方案


1.xss(跨站脚本攻击)

1.1 概念

跨站脚本攻击(Cross-Site Scripting,XSS)是指通过存在安全漏洞的Web 网站注册用户的浏览器内运行非法的 HTML 标签或 JavaScript 进行的一种攻击。动态创建的 HTML 部分有可能隐藏着安全漏洞。就这样,攻击者编写脚本设下陷阱,用户在自己的浏览器上运行时,一不小心就会受到被动攻击。

跨站脚本攻击有可能造成以下影响:1、利用虚假输入表单骗取用户个人信息;2、利用脚本窃取用户的 Cookie 值,被害者在不知情的情况下,帮助攻击者发送恶意请求;3、显示伪造的文章或图片。

例如在动态生成 HTML 处发生,input、textarea等

1.2 防御手段

将用户所提供的内容进行过滤。

1、对于输入:检测是否有script.img.等标签

2、对于输出:转义字符<转义成&lt; >转义成&gt;

3、设置cookie的httponly属性为true,则js无法通过document.cookie访问

4、又或者使用<script>或者 <img>,添加src,访问黑客的服务器,盗取cookie

5、或者直接<script>加上JS代码,修改form表单的action和method,甚至表单信息。

 

2.csrf(跨站请求伪造)

2.1 概念

跨站点请求伪造(Cross-Site Request Forgeries,CSRF)攻击是指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击。

跨站点请求伪造有可能会造成以下等影响:1、利用已通过认证的用户权限更新设定信息等;2、利用已通过认证的用户权限购买商品;3、利用已通过认证的用户权限在留言板上发表言论

要完成一次CSRF攻击,受害者必须依次完成两个步骤:

1、登录受信任网站A,并在本地生成cookie

2、在不登出A的情况下,访问危险网站B(网站B可以利用A中的cookie进行某些操作)

例子:

 

CSRF攻击的主要目的是让用户在不知情的情况下攻击自己已登录的一个系统,类似于钓鱼。如用户当前已经登录了邮箱,或bbs,同时用户又在使用另外一个,已经被你控制的站点,我们姑且叫它钓鱼网站。这个网站上面可能因为某个图片吸引你,你去点击一下,此时可能就会触发一个js的点击事件,构造一个bbs发帖的请求,去往你的bbs发帖,由于当前你的浏览器状态已经是登陆状态,所以session登陆cookie信息都会跟正常的请求一样,纯天然的利用当前的登陆状态,让用户在不知情的情况下,帮你发帖或干其他事情。

2.2 CSRF防御

1、通过 referer(由服务器做检查)、token 或者 验证码 来检测用户提交。(token由客户端生成,事先与服务器商量,使用相同的salt进行加密,,然后服务器对token进行解密。添加到url中或者cookie中都行,因为每次通信的token不同)

2、尽量不要在页面的链接中暴露用户隐私信息。

3、对于用户修改删除等操作最好都使用post 操作 。

4、避免全站通用的cookie,严格设置cookie的域(domain)。

 

3. SQL注入

3.1 概念

SQL 注入(SQL Injection)是指针对 Web 应用使用的数据库,通过运行非法的 SQL 而产生的攻击。该安全隐患有可能引发极大的威胁,有时会直接导致个人信息及机密信息的泄露。

Web 应用通常都会用到数据库,当需要对数据库表内的数据进行检索或添加、删除等操作时,会使用 SQL 语句连接数据库进行特定的操作。如果在调用 SQL 语句的方式上存在疏漏,就有可能执行被恶意注入(Injection)非法 SQL 语句。

SQL 注入攻击有可能会造成以下等影响:1、非法查看或篡改数据库内的数据;2、规避认证;3、执行和数据库服务器业务关联的程序等

通常在URL上进行修改,因为后台服务器检测不全,会直接执行URL后的search(?后面的)。

SQL中 单行注释-- 多行注释/**/

比如:

请求:http://example.com/search?q=name

SQL:SELECT *FROM TABLE WHERE author=‘name’ and flag = 1

SQL注入:http://example.com/search?q=name‘--

如果未检测:SELECT *FROM TABLE WHERE author=‘name’--’ and flag = 1

3.2 防御手段

1)正则表达式

2)字符串过滤

 

4.DDOS

4.1 概念

分布式拒绝服务攻击。简单说就是发送大量请求是使服务器瘫痪。

4.2 例子

1. SYN Flood ,简单说一下tcp三次握手,客户端先服务器发出请求,请求建立连接,然后服务器返回一个报文,表明请求以被接受,然后客户端也会返回一个报文,最后建立连接。那么如果有这么一种情况,攻击者伪造ip地址,发出报文给服务器请求连接,这个时候服务器接受到了,根据tcp三次握手的规则,服务器也要回应一个报文,可是这个ip是伪造的,报文回应给谁呢,第二次握手出现错误,第三次自然也就不能顺利进行了,这个时候服务器收不到第三次握手时客户端发出的报文,又再重复第二次握手的操作。如果攻击者伪造了大量的ip地址并发出请求,这个时候服务器将维护一个非常大的半连接等待列表,占用了大量的资源,最后服务器瘫痪。

2. CC攻击,在应用层http协议上发起攻击,模拟正常用户发送大量请求直到该网站拒绝服务为止。

4.3 解决方案

1. 最直接的方法增加带宽。但是攻击者用各地的电脑进行攻击,他的带宽不会耗费很多钱,但对于服务器来说,带宽非常昂贵。

2. 云服务提供商有自己的一套完整DDoS解决方案,并且能提供丰富的带宽资源

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在2024年的Web前端面试中,面试官可能会关注一系列的技能和概念,包括但不限于HTML、CSS、JavaScript、前端框架(如React、Vue、Angular)、性能优化、响应式设计、浏览器兼容性、模块化和打包工具(Webpack、Rollup)、API交互、前端测试(如Jest、Mocha)、SEO、以及最近流行的技术趋势如WebAssembly、PWA(Progressive Web App)和GraphQL等。 具体的问题可能涵盖: 1. HTML5新特性的理解和使用,比如语义化的标签和表单控制。 2. CSS3样式和布局技巧,如Flexbox和Grid的使用。 3. JavaScript ES6+的新特性,比如箭头函数、模板字面量、Promise和Async/Await等。 4. 面向前端开发的JavaScript库和框架的最佳实践,如组件化开发和状态管理。 5. 了解并评价不同前端框架的核心思想和适用场景。 6. 浏览器渲染原理和性能优化策略,如懒加载、预渲染、缓存优化等。 7. 对跨域、同源策略和HTTPS的理解,以及处理JSONP或CORS的方法。 8. Webpack或Rollup的工作原理,以及如何配置它们来处理模块和打包。 9. 如何设计和实现可复用、可测试的前端代码结构。 10. 对现代前端测试的认识,包括单元测试、集成测试和端到端测试。 11. Web性能优化案例分享,如减少HTTP请求、压缩资源、CDN使用等。 12. 了解基本的SEO优化原则,如元标签、索引优化等。 13. 对现代前端架构,如服务端渲染、单页应用(SPA)和微前端的理解。 14. 最新的前端技术动态,例如WebAssembly如何提升性能,PWA如何提供离线体验,以及GraphQL如何改进API设计。 如果你想深入了解前端面试题,建议关注权威技术博客、参加在线课程和模拟面试练习,不断更新自己的知识库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值