目标:加解密数据 + 压缩混淆代码
Web 安全
web client 中如何安全传输敏感信息
在 Web 开发中,为了安全传输敏感信息,可以采取以下措施:
使用 HTTPS 协议:确保网站使用加密连接,通过 SSL/TLS 加密传输数据,防止信息在传输过程中被窃取或篡改。
Strict-Transport-Security
响应头部字段告诉浏览器只能使用 HTTPS 访问站点
避免明文传输敏感信息:不要在 URL 参数中或者 GET 请求中传输敏感信息,避免在页面上明文展示敏感数据。
数据加密:对敏感数据进行加密处理,确保在服务器端存储和传输数据时是加密的状态,例如使用加密算法对密码进行加密存储。(非对称加密)
防止跨站脚本攻击(Cross-site scripting,XSS) 攻击:有效防范跨站脚本攻击,避免恶意脚本获取用户输入的敏感信息并发送到其他服务器。
- 服务端和客户端都可以配置 Content Security Policy (CSP) 内容安全策略减轻 XSS 攻击。
防止 CSRF 攻击:通过 CSRF token 来防御跨站请求伪造攻击,确保请求来源合法。
安全的 Cookie 设置:使用 Secure 和 HttpOnly 标志来设置 Cookie,防止通过 XSS 攻击和脚本访问敏感信息。
访问控制:限制敏感页面的访问权限,确保只有授权用户可以访问敏感信息。
网络攻击
从客户端接收到得 HTTP 请求的全部内容都可以在客户端任意篡改。
在 HTTP 请求报文内容加载攻击代码就能发起对 Web 应用的攻击,通过 URL 查询字段、表单、HTTP 首部、Cookie 等途径把攻击代码传入,若 Web 应用存在安全漏洞则会被攻击者窃取内部信息或管理权限。
攻击模式
针对 Web 应用的攻击模式有两类
- 主动攻击:直接针对服务器上的资源进行攻击,攻击者需要能访问服务器资源,代表有:
- SQL 注入:针对 Web 应用的数据库攻击
- OS 命令注入:通过 Web 应用执行非法的操作系统命令
- 被动攻击:利用圈套策略执行攻击代码,攻击者在页面设置陷阱,用户触发陷阱并把含有攻击代码的 HTTP 请求发送给 Web 应用,执行攻击代码。代表有:
- 跨站脚本攻击
- 跨站点请求伪造
跨站脚本攻击
跨站脚本攻击(XSS, Cross Site Scripting):网站(HTML 文档)被注入了恶意脚本(element.innerHTML 插入<script>
标签);
通过 url、表单提交触发
分类
反射型 储存型 DOM型
解决方法
1、内容安全策略:script-self
2、符号转义:<>(尖括号)、”(引号)、 ‘(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等转义;
跨站请求伪造CSRF
一个典型的CSRF攻击有着如下的流程:
- 受害者登录a.com,并保留了登录凭证(Cookie)。
- 攻击者引诱受害者访问了b.com。
- b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的 Cookie。
- a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。
- a.com以受害者的名义执行了act=xx。
- 攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作。
解决方法:
- 检查请求头部中的 referer、origin 字段;
- 添加校验Token;
- 通过输入验证码校验合法请求;
- cookie 配置 sameSite 属性
提高安全性
输入验证、输出转义
内容安全策略
CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行
CSP
的主要目的是防止跨站脚本攻击(XSS)。启用 CSP 的两种方法:
HTTP 响应头信息的
Content-Security-Policy
的字段;Content-Security-Policy: <policy-directive>; <policy-directive>
HTML 文件的
<meta>
标签;html<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';" />
script-src
和object-src
是必设的,除非设置了default-src
。 因为攻击者只要能注入脚本,其他限制都可以规避。而object-src
必设是因为 Flash 里面可以执行外部脚本;
Content-Security-Policy: script-src 'self'; object-src 'none';
style-src cdn.example.org third-party.org; child-src https:
参考:Content Security Policy 入门教程-阮一峰