关于javascript:前端安全SQL注入XSS-CSRF

42次阅读

共计 1508 个字符,预计需要花费 4 分钟才能阅读完成。

1.SQL 注入

1.1 定义

所谓 SQL 注入式攻打,就是攻击者把 SQL 命令插入到 Web 表单的输出域或页面申请的查问字符串,坑骗服务器执行歹意的 SQL 命令。攻击者通过在应用程序事后定义好的 SQL 语句结尾加上额定的 SQL 语句元素,坑骗数据库服务器执行非受权的查问, 篡改命令。

1.2 原理:

假如的登录查问

SELECT * FROM users WHERE login = 'victor' AND password = '123'
Sever 端代码

String sql = "SELECT * FROM users WHERE user===${user} and pwd===${pwd}

输出字符

userInput = ‘ or 1=1
pwdInput = anything

理论的查问代码

SELECT * FROM users WHERE username = '' or 1=1 AND password ='anything'
即可绕过明码验证,同样的 还能够输出 `-- 来正文明码验证的 sql

1.3 措施

  • 前端对用户的输出做限度
  • 后端对用户的输出做本义 比方 ‘ 本义成 ‘

2.XSS

2.1 定义

XSS 利用的是用户对网站的信赖
XSS 全称(Cross Site Scripting) 跨站脚本攻打,是 Web 程序中最常见的破绽。指攻击者在网页中嵌入客户端脚本(例如 JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目标. 比方获取用户的 Cookie,导航到歹意网站, 携带木马等

2.2 原理

存储型 XSS

注入型脚本永恒存储在指标服务器上。当浏览器申请数据时,脚本从服务器上传回并执行。

反射型 XSS

当用户点击一个歹意链接,或者提交一个表单,或者进入一个歹意网站时,注入脚本进入被攻击者的网站。Web 服务器将注入脚本,比方一个错误信息,搜寻后果等 返回到用户的浏览器上。因为浏览器认为这个响应来自 ” 可信赖 ” 的服务器,所以会执行这段脚本。

基于 DOM 的 XSS

通过批改原始的客户端代码,受害者浏览器的 DOM 环境扭转,导致有效载荷的执行。也就是说,页面自身并没有变动,但因为 DOM 环境被歹意批改,有客户端代码被蕴含进了页面,并且意外执行。

2.3 措施

对输出 (和 URL 参数) 进行过滤,对输入进行编码

3.CSRF

3.1 定义

跨站申请伪造(英语:Cross-site request forgery),通常缩写为 CSRF 或者 XSRF。是一种挟制用户在以后已登录的 Web 应用程序上执行非本意的操作的攻打办法

3.2 原理

CSRF 利用的是网站对用户网页浏览器的信赖
跨站申请攻打,简略地说,是攻击者通过一些技术手段坑骗用户的浏览器去拜访一个本人已经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。因为浏览器已经认证过,所以被拜访的网站会认为是真正的用户操作而去运行。这利用了 web 中用户身份验证的一个破绽:简略的身份验证只能保障申请发自某个用户的浏览器,却不能保障申请自身是用户被迫收回的。

3.3 措施

  • 增加校验 token

因为 CSRF 的实质在于攻击者坑骗用户去拜访本人设置的地址,所以如果要求在拜访敏感数据申请时,要求用户浏览器提供不保留在 cookie 中,并且攻击者无奈伪造的数据作为校验,那么攻击者就无奈再运行 CSRF 攻打。这种数据通常是窗体中的一个数据项。服务器将其生成并附加在窗体中,其内容是一个伪随机数。当客户端通过窗体提交申请时,这个伪随机数也一并提交下来以供校验。失常的拜访时,客户端浏览器可能正确失去并传回这个伪随机数,而通过 CSRF 传来的欺骗性攻打中,攻击者无从当时得悉这个伪随机数的值,服务端就会因为校验 token 的值为空或者谬误,回绝这个可疑申请。

  • 查看 referer 字段
正文完
 0