网络安全
HTTP和HTTPS的主要区别
- 安全性:HTTP以明文方式传输数据,不提供任何方式的数据加密,存在较大的安全风险;而HTTPS通过SSL/TLS协议对数据进行加密,提供数据传输的安全性和完整性。12
- 数据传输方式:HTTP使用TCP/IP协议的80端口进行数据传输,而HTTPS使用443端口进行加密传输。
- 证书管理:HTTPS需要使用CA(证书颁发机构)颁发的证书进行加密和解密操作,而HTTP则不需要证书。
- 连接状态:HTTPS连接在数据传输过程中始终保持加密状态,而HTTP连接是无状态的,每个请求都是独立的。
- 资源消耗:由于HTTPS需要进行加密和解密操作,资源消耗较大,可能会影响网页加载速度;而HTTP的资源消耗较小。
- 兼容性:HTTPS可能需要配置证书,在某些情况下可能会出现兼容性问题;而HTTP的兼容性较好,可以在各种设备和操作系统上使用。
详细解释HTTP和HTTPS的区别
协议基础概念:HTTP是一种超文本传输协议,用于在Web浏览器和Web服务器之间传输数据,使用明文传输,不提供数据加密;而HTTPS是HTTP的安全版本,通过SSL/TLS协议对数据进行加密,提供数据传输的安全性和完整性。 安全性差异:HTTPS通过SSL/TLS协议对数据进行加密,确保数据在传输过程中的机密性和完整性,防止数据被截获和篡改;而HTTP则没有这样的加密功能,数据在传输过程中可能被截获或篡改。 连接方式与证书管理:HTTP使用明文传输,不需要额外的安全验证;而HTTPS需要SSL/TLS的握手过程,客户端和服务器在交换过程中比较复杂,但提高了连接的安全性。
HTTPS的优点和缺点
优点:HTTPS提供了高级别的安全性,通过SSL/TLS协议对数据进行加密,防止数据在传输过程中被截获和篡改;此外,HTTPS还通过数字证书进行身份认证,防止中间人攻击等安全风险。 缺点:由于需要进行加密和解密操作,HTTPS可能会影响网页的加载速度;此外,部署HTTPS需要购买SSL/TLS证书,增加了网站的运营成本。
xss xxe csrf区别
XSS(跨站脚本攻击)
本质,是把用户输入的数据当做代码执行。 第一个是用户能够控制输入 第二个是原本程序要执行的代码,拼接了用户输入的数据
xss类型
反射:通过url传输恶意代码让客户端执行
存储:通过后端返回恶意代码执行
- 例如提交一条评论,上面写入一串会被浏览器解析执行的脚本 其他用户在打开评论看到这条数据就会将这串脚本执行
- dom:通过修改dom 注入恶意代码
<script>
const content=`' onerror='alert()'`
</script>
<img src=`'http://server/api/${content}`/>预防xss 攻击
对用户输入的数据进行严格验证和过滤,确保只接受有效和预期的数据。可以使用白名单过滤或正则表达式验证来限制输入内容
Content Security Policy 内容安全策略
nginx配置 Content-Security-Policy: script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https: meta标签配置
CSRF(跨站请求伪造)
- 用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
- 在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
- 用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
- 网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
- 浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
预防csrf攻击
- referer 请求头中设置源站点服务器地址
- 请求头中加入 csrfToken
XXE(XML 外部实体攻击)
XXE 攻击是指攻击者利用 XML 解析器的特性,通过在 XML 中引用外部实体文件,达到读取敏感数据或执行远程请求的目的。 预防 XXE 攻击的方法包括禁用或限制 XML 实体、过滤用户输入中的 XML 内容等。
xss 和 csrf区别
1、CSRF是跨站请求伪造; XSS是跨域脚本攻击。 2、CSRF需要用户先登录网站A,获取cookie; XSS不需要登录。 3、CSRF是利用网站A本身的漏洞,去请求网站A的api; XSS是向网站A注入JS代码,然后执行JS里的代码,篡改网站A的内容。(XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。你可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求。)
