网络安全与防御
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
用户身份被盗用
用户密码泄露
用户资料被盗取
网站数据库泄露
XSS ( Cross Site Scripting ) 是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码。从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
反射型XSS:经过后端,不经过数据库。发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。
存储型XSS:经过后端,经过数据库。区别于反射型XSS,提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码,但是该存储的XSS代码会传回给浏览器,浏览器发现有XSS代码,就正常执行,出发了XSS攻击。
DOM XSS:不经过后端,通过url传入参数去控制触发。DOM XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情。
获取页面数据
获取cookie
劫持前端逻辑
发送请求
偷取网站任意数据
偷取用户资料
偷取用户密码和登陆态
欺骗用户
cookie设置httpOnly属性
对用户的输入进行检查
进行特殊字符过滤(转义) - 建议使用成熟的转义库
用户 C 打开浏览器,访问受信任网站 A,输入用户名和密码请求登录网站 A
在用户信息通过验证后,网站 A 产生 Cookie 信息并返回给浏览器,此时用户登录网站 A 成功,可以正常发送请求到网站 A
用户未退出网站 A 之前,在同一浏览器中,打开一个 TAB 页访问网站 B
网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点 A
浏览器在接收到这些攻击性代码后,根据网站 B 的请求,在用户不知情的情况下携带 Cookie 信息,向网站 A 发出请求,网站 A 并不知道该请求其实是由 B 发起的,所以会根据用户 C 的 Cookie 信息以 C 的权限处理该请求,导致来自网站 B 的恶意代码被执行
利用用户登录态
用户不知情
完成业务请求
盗取用户资金
冒充用户发帖背锅
损坏网站名誉
验证 HTTP Referer 字段;
在请求地址中添加 token 并验证;
在 HTTP 头中自定义属性并验证;
不让第三方网站访问到用户 Cookie等
cookie 设置 sameSite
点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过 iframe 嵌套的方式嵌入自己的网页中,并将 iframe 设置为透明,在页面中透出一个按钮诱导用户点击。
X-FRAME-OPTIONS是一个 HTTP 响应头,在现代浏览器有一个很好的支持,主要就是为了防御用 iframe 嵌套的点击劫持攻击。该响应头有三个值可选,分别是
DENY
,表示页面不允许通过iframe
的方式展示
SAMEORIGIN
,表示页面可以在相同域名下通过iframe
的方式展示
ALLOW-FROM
,表示页面可以在指定来源的iframe
中展示
中间人攻击是攻击方同时与服务端和客户端建立起了连接,并让对方认为连接是安全的,但是实际上整个通信过程都被攻击者控制了。攻击者不仅能获得双方的通信信息,还能修改通信信息。通常来说不建议使用公共的 Wi-Fi,因为很可能就会发生中间人攻击的情况。
增加一个安全通道来传输信息,HTTPS 就可以用来防御中间人攻击,但是并不是说使用了 HTTPS 就可以高枕无忧了,因为如果你没有完全关闭 HTTP 访问的话,攻击方可以通过某些方式将 HTTPS 降级为 HTTP 从而实现中间人攻击。
所谓 SQL 注入,就是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,后台执行 SQL 语句时直接把前端传入的字段拿来做 SQL 查询。
永远不要信任用户的输入。
永远不要使用动态拼装 sql
不要把机密信息直接存放
参考资料:
如果你对内容有任何疑问,欢迎提交 或