web安全与性能优化(web 攻击)

Posted 百变小樱桃~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web安全与性能优化(web 攻击)相关的知识,希望对你有一定的参考价值。


前端经典项目框架如下

全栈项目经典后端框架如下

前端技术栈如下:(可自行百度看API文档)
–elementUI
– Vue.js
– Npm
– Webpack
– WebSocket
– Node

后端技术栈如下:
– 基础Web服务,微服务架构
mysql
– Redis
– ElasticS
nginx
– CDN

Redis•
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的key-value 数据库。
– Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
– 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
– Redis支持数据的备份,即master-slave模式的数据备份。

ElasticSearch
• Elasticsearch 是一个分布式、高扩展、高实时的搜索与 数据分析引擎。它能很方便的使大量数据具有搜索、分 析和探索的能力。

• Elasticsearch 的实现原理主要分为以下几个步骤:
– 用户将数据提交到Elasticsearch 数据库
– 通过分词控制器去将对应的语句分词,将其权重和分词结 果一并存入数据库
– 当用户搜索数据时候,再根据权重将结果排名,打分,再 将返回结果呈现给用户。

Nginx
• Nginx 是一个高性能的HTTP和反向代理web服务器,同 时也提供了IMAP/POP3/SMTP服务。

CDN
• CDN的全称是Content Delivery Network,即内容分发
网络。CDN是构建在现有网络基础之上的智能虚拟网络,
依靠部署在各地的边缘服务器,通过中心平台的负载均
衡、内容分发、调度等功能模块,使用户就近获取所需
内容,降低网络拥塞,提高用户访问响应速度和命中率。
CDN的关键技术主要有内容存储和分发技术。

CDN边缘服务器实现负载均衡、内容分发、调度等功能如下:

• CDN缓存原理:

• CDN节省骨干网带宽,提高服务器访问速度与稳定性,
能克服网站分布不均的问题:

数据库优化
• 数据库优化主要包含以下几类:



– SQL调优与索引(解决大部分问题)

SQL以及索引的优化是最重要的。首先要根据需求写出结构良好的
SQL,然后根据SQL在表中建立有效的索引。但是如果索引太多,不
但会影响写入的效率,对查询也有一定的影响。

– 数据结构
– 系统配置
– 硬件


– SQL调优与索引(解决大部分问题)
– 数据结构
要根据一些范式来进行表结构的设计。设计表结构时,就需要考虑如
何设计才能够更有效的查询。
– 系统配置
– 硬件

– SQL调优与索引(解决大部分问题)
– 数据结构
– 系统配置
系统配置的优化。MySQL数据库是基于文件的,如果打开的文件数达
到一定的数量,无法打开之后就会进行频繁的IO操作。
– 硬件


– SQL调优与索引(解决大部分问题)
– 数据结构
– 系统配置
– 硬件
硬件优化。更快的IO、更多的内存。一般来说内存越大,对于数据库
的操作越好。但是CPU多就不一定了,因为他并不会用到太多的CPU
数量,有很多的查询都是单CPU。另外使用高的IO(SSD、RAID)。

– html静态化:
效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使
我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也
是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无法
全部手动去挨个实现,于是出现了我们常见的信息发布系统CMS,像
我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是
通过信息发布系统来管理和实现的。

– 图片服务器分离
– 缓存
– 负载均衡


– HTML静态化
– 图片服务器分离
– 缓存
– 负载均衡
负载均衡将是大型网站解决高负荷访问和大量并发请求采用的高端解
决办法。可以使用Nginx实现。

请求响应优化
• 减少DNS查找:每次主机名的解析都需要一次网络往返, 从而增加了请求的延迟时间,同时还会阻塞后续的请求。
• 减少HTTP重定向。HTTP冲定向需要额外的DNS查询、 TCP握手等非常耗时,最佳的重定向次数为0.
• 使用CDN(内容分发网络):把数据放在离用户地理位 置更近的地方,可以明显减少每次TCP连接的网络延迟, 增大吞吐量。

删除没有必要请求的资源。
• 在客户端缓存资源:缓存必要的应用资源,避免每次都 重复请求相同的内容,例如多图片下载可以考虑使用缓 存。
• 内容在传输前先压缩:传输数据之前应该先压缩应用资 源,把要传输的字节减少到最小,在压缩的时候确保对 每种不同的资源采用最好的压缩手段。

• 消除不必要的请求开销:减少请求的HTTP首部数据(比 如HTTP cookie). • 并行处理请求和响应:请求和响应的派对都会导致延迟,
可以尝试并行的处理请求和响应(利用多个HTTP1.1连 接实现并行下载,在可能的情况下使用HTTP管道计数)。
• 1针对协议版本采取优化措施。升级到HTTP2.0。

常见Web安全问题及解决方案(面试会问到)

• 常见Web安全问题有:
(自行了解)
• SQL注入问题
• XSS跨站脚本攻击
• XSRF跨站请求伪造
• Session劫持

SQL注入即是指web应用程序对用户输入数据的合法性
没有判断或过滤不严,攻击者可以在web应用程序中事
先定义好的查询语句的结尾上添加额外的SQL语句,在
管理员不知情的情况下实现非法操作,以此来实现欺骗
数据库服务器执行非授权的任意查询,从而进一步得到
相应的数据信息。

一般用户登录用的SQL语句为:

SELECT * FROM user WHERE username='admin' AND password='password' 

此处adminpasswd分别为用户输入的用户名和密码
如果程序员没有对用户输入的用户名和密码做处理,就
可以构造万能密码成功绕过登录验证,如:

#输入密码: 'or'1'=='1 
SELECT * FROM user WHERE username=='' AND password=''
or '1'=='1'

• SQL注入问题的解决方案:
– 做好客户端表单验证。
– 做好服务端参数验证。
– 数据库使用预编译的SQL语句。

XSS跨站脚本攻击

• XSS是跨站脚本攻击(Cross Site Scripting),为不和层叠
样式表(Cascading Style Sheets, CSS)的缩写混淆,故
将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里
插入恶意Script代码,当用户浏览该页之时,嵌入其中
Web里面的Script代码会被执行,从而达到恶意攻击用
户的目的。

这里举一个简单的例子,留言板通常的任务就是把用户
留言的内容展示出来。正常情况下,用户的留言都是正
常的语言文字,留言板显示的内容也就没毛病。然而这
个时候如果有人不按套路出牌,在留言内容中丢进去一
行:

<script> alert("hey!you are attacked") </script>

那么留言板的内容将会变为以下代码:


XSS的危害有如下几类:
– 窃取网页浏览中的cookie值
在网页浏览中我们常常涉及到用户登录,登录完毕之后服务端会返回 一个cookie值。这个cookie值相当于一个令牌,拿着这张令牌就等同 于证明了你是某个用户。
– 劫持流量实现恶意跳转
– 窃取网页浏览中的cookie值 – 劫持流量实现恶意跳转
这个很简单,就是在网页中想办法插入一句像这样的语句:

<script>window.location.href="http://www.baidu.com"; </script>

• XSS的解决方案:
使用转义解决。将<转义为&lt; >转义为&gt;

XSRF跨站请求伪造

跨站请求伪造(英语:Cross-site request forgery),
也被称为 ·one-click attack· 或者 ·session riding·,通常
缩写为 CSRF 或者 XSRF, 是一种 挟制用户 在当前已登 录Web应用程序上执行非本意的操作的 攻击方法。跟
**跨网站脚本(XSS)**相比,XSS 利用的是用户对指定网 站的信任CSRF 利用的是网站对用户网页浏览器的信任

XSRF跨站请求伪造
例如:
– 假如一家银行用以运行转账操作的URL地址如下:

http://www.examplebank.com/withdraw?
account=zhangsan&amount=1000&for=lisi

– 那么,一个恶意攻击者可以在另一个网站上放置如下代码:

<img src="http://www.examplebank.com/withdraw?
account=zhangsan&amount=1000&for=Badman">

如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,
登录信息尚未过期,那么她就会损失1000资金。

• XSRF常见解决方案:
– token验证
– CSRF,关键在于在请求中放入黑客所不能伪造的信息,并
且该信息不存在于 cookie 之中。可以在 HTTP 请求中以 参数的形式加入一个符合某种规则的 token,并在服务器
建立一个拦截器验证这个 token,如果请求中没有
token 或者 token 内容不正确,则认为可能是 CSRF 攻击
拒绝请求

Session劫持

http协议本身是无状态的,但是现代站点很多都需要维
持登录态,也就是维持会话。所以现在大多数站点采用
基于cookie的session管理方式:用户登陆成功后,设置
一个唯一的cookie标识本次会话,基于这个标识进行用 户授权。只要请求中带有这个标识,都认为是登录态

• Session劫持的解决方案:
– 解决XSS。 – Session、IP双重认证。
– Token机制。

以上是关于web安全与性能优化(web 攻击)的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Web安全之SQL注入攻击与防护

安全开发运维必备的Nginx代理Web服务器性能优化与安全加固配置

系统安全性Web攻击与防范

web安全之sql注入综述

WEB服务端安全---注入攻击

防火墙和系统安全防护和优化