常见web攻击方式
分类:
文章
•
2024-04-05 10:02:48
XSS跨站脚本攻击

- 攻击者在服务器返回的普通页面中嵌入特殊的脚本代码,那么在普通用户浏览这个网页的时候,这个特殊的脚本代码就得到了执行,于是用户的 Cookie 通过请求的方式发送给了这个攻击者指定的地址,这样攻击者就劫持了用户的会话,利用 Cookie 中标识身份的字符串,就可以伪装成实际的用户在这个网页操作了
- 恶意脚本的上传方式,往往是利用网站没有对用户的输入(例如提交的表单)进行过滤或转义造成的

-
防御方式
- 做好字符转义和过滤
- 让用户上传的文本在展示的时候永远只是文本,而不能变成 HTML 和脚本
- 控制好 Cookie 的作用范围
- 比如服务器在返回
Set-Cookie
头的时候,设置 HttpOnly
这个标识
- 这样只能通过http访问,javascript无法访问,恶意上传的js脚本就无法获得 Cookie 了
CSRF跨站请求伪造

- 和XSS区别在于恶意请求全部发生在用户的浏览器上
- 这样不需要拿到cookie,绕开了HTTPOnly的限制
-
防御方式
- 使用 HTTP 的
Referer
头
- 因为
Referer
头可以携带请求的来源页面地址,这样可以根据 Referer 头鉴别出伪造的请求
- 使用 token,服务端给每个表单都生成的一个随机值
- Token和Cookie 所不同的是,前者是对每个页面或每个表单就会生成一个新的值,而后者则是只有会话重新生成的时候才会生成
- 当用户正常操作的时候,这个 token 会被带上,从而证明用户操作的合法性,而如果是 CSRF 的情形,这个请求来自于一个非预期的位置,那么就不可能带有这个正确的 token。
- 一旦存在xss,csrf的防御措施都可能失效
SQL注入
- SQL 注入指的是攻击者利用网站漏洞,通过构造特殊的嵌入了 SQL 命令的网站请求以欺骗服务器,并执行该恶意 SQL 命令
-
防御方式
- 对输入参数进行校验和过滤
- SQL语句的执行尽可能采用参数化查询接口,而不是字符串拼接
HTTP劫持
- 由于HTTP是明文传输,所以可以被运营商或者网络服务提供商任意篡改
- 常用方式是把原网页嵌入一个
iframe
中,并让这个iframe
占据这个浏览器,然后就可以在iframe
外添加浮动广告了
- 把网站换位HTTPS可以避免这种劫持
DNS劫持
- 用户的浏览器在通过 DNS 查询目标域名对应的 IP 地址的时候,会被攻击者引导到一个恶意网站的地址。这个假的网站也可以有相似的页面布局,也可能有“正规”方式申请的 HTTPS 证书
- HTTPS加密并不能防范DNS劫持
- 可以通过DNS over HTTPS 的安全域名解析方案防御
DDoS攻击
- 攻击者使用若干被“攻陷”的电脑(比如被病毒占领和控制的“肉鸡”),向网络应用和服务同一时间发起请求,通过一瞬间的请求洪峰,将服务冲垮。