常见的web安全问题有哪些 r囧r小猫 2022-12-23 06:47 118阅读 0赞 ## 常见的web安全问题有哪些 ## (1)SQL注入 > SQL注入是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。SQL危害到数据库的信息,管理员的账号密码、用户的敏感信息等;可以获取服务器权限;植入攻击脚本;读取服务器敏感文件。 > 常见的一个例子,登陆页面输入用户名`admin' --`,密码随意输入,这样子后台的SQL语句会由原来的`SELECT * FROM user WHERE username='admin' AND psw='password';`就会变为`SELECT * FROM user WHERE username='admin' --' AND psw='xxxx';`,这就相当于密码部分被注释了,成了万能不需要密码登陆了。 > SQL注入的过程包括: * 获取用户请求参数 * 拼接到代码当中 * SQL语句按照构造参数的语义执行成功 > SQL注入的必备条件: * 可以控制输入的数据 * 服务器要执行的代码拼接了控制的数据 > SQL注入防御: * 严格限制Web应用的数据库操作权限,如权限仅够满足工作即可 * 后端代码检查输入的数据是否安全合规,如正则匹配 * 对入库的特殊字符进行转义处理或者编码转换 * 所有的查询语句建议是同数据库提供的参数化查询接口 (2)CSRF > CSRF(Cross Site Request Forgery)跨站请求伪造,是一种常见的Web攻击,它利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。 > 完成CSRF攻击必须具备的三个条件:用户已经登录了站点A,并在本地记录了cookie;在用户没有登出站点A的情况下(也就是cookie生效的情况下),访问了恶意攻击者提供的引诱危险站点B,B站点发出一个请求站点的一个request请求;站点A没有做任何CSRF防御。 > 防范CSRF攻击可以遵循的规则: * GET请求不对数据进行修改; * 不让第三方网站访问用户Cookie; * 阻止第三方网站请求接口; \-请求附带验证信息,如验证码或者Token; > 防御CSRF: * Same Site:对Cookie设置Same Site属性,不随着跨域请求发送; * Referer Check:通过检查HTTP包头Referer的值是不是这个页面的,来判断是不是CSRF攻击; * Anti CSRF Token:比较完善的解决方案,即在发送请求时在HTTP请求总以参数的形式加入一个随机产生的Token,并在服务器建立一个拦截器来验证这个Token,服务器读取浏览器当前域cookie中这个token值,进行校验。 * 验证码:应用程序和用户交互过程中,特别是账户交易这种核心步骤,强制用户输入验证码,才能完成最终的请求,这样能够很好的遏制CSRF攻击。 (3)XSS > XSS(Cross Site Scripting)跨站脚本攻击,因为缩写与CSS重名,所以叫XSS,是指通过存在安全漏洞的Web网站注册用户的浏览器内运行的HTML标签或JavaSript进行的一种攻击。XSS的原理是恶意攻击者往Web页面里插入恶意可插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或者其他侵犯用户安全隐私的目的。 > 利用虚假输入表单骗取用户个人信息;利用脚本切取用户的Cookie值,被害者在不知情的情况下,帮助攻击者发送恶意请求;显示伪造的文章或图片。 > 其中XSS攻击可分为持久型(存储型XSS)和非持久型(反射型XSS),非持久型一般都是通过别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行;持久型XSS漏洞一般存在于Form表单等交换功能,如文章留言、提交文本信息等。 > 防御XSS: * CSP:本质上就是建立白名单,配置规则告诉浏览器那些资源可以加载和执行,如设置HTTP header中的`Content Security Policy: default-src 'self'`限制加载本站资源或设置meta标签的方式; * 转义字符:用户的输入永远不可信任,对引号、尖括号、斜杠、进行转义; * HttpOnly Cookie:预防XSS攻击窃取用户cookie最有效的防御手段,Web应用程序在设置cookie时,将其属性设为HttpOnly,就可以避免该网页的cookie被客户端javaScript窃取,保护用户cookie信息。 (4)点击劫持 > 点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过 iframe 嵌套的方式嵌入自己的网页中,并将 iframe 设置为透明,在页面中透出一个按钮诱导用户点击。 > 点击劫持的原理:用户在登陆A网站的系统后,,被攻击者诱惑打开第三方网站,而第三方网站通过iframe引入了A网站的页面内容,用户在第三方网站中点击某个存在点击劫持的按钮,实际上就是点击了A网站的按钮。 > 点击劫持的特点:隐蔽性较高,骗取用户操作;“UI-覆盖攻击”;利用iframe或者其它标签的属性。 > 防御点击劫持: * X-FRAME-OPTIONS:DENY表示页面不允许通过iframe的方式展示;SAMEORIGIN表示页面可以在相同域名下通过iframe的方式展示;ALLOW-FROM表示页面可以在指定来源的iframe中展示。 * JavaScript防御:当通过ifrmae的方式加载页面时,攻击者的网页直接不显示所有内容了。 (5)URL跳转漏洞 > URL跳转漏洞是指借助未验证的URL跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。 > URL跳转漏洞的原理:黑客利用URL跳转漏洞来诱导安全意识低的用户点击,导致用户信息泄露或者资金流失。其原理是黑客构建恶意链接,发送到QQ群、微信群或者贴吧/论坛中,安全意识低的用户点击后,经过服务器或浏览器解析后后,跳转到恶意的网站中,简单来说就是钓鱼网站。 > 实现方式:Header跳转、JavaScript跳转、meta标签跳转。 > 防御URL跳转漏洞: * Referer的限制 * 加入有效性验证Token (6)OS命令攻击注入 > OS命令注入和SQL注入差不多,只不过SQL注入是针对数据库的,而OS命令是针对操作系统的。OS命令注入攻击指通过Web应用,执行非法的操作系统命令达到攻击的目的。主要在能调用shell函数的地方就存在被攻击的风险。OS命令注入攻击可以向shell发送命令,让操作系统的命令行启动程序、安装程序等。 > `rm -rf`很可怕!!! > 防御OS命令攻击注入: * 后端对前端提交的内容进行规则限定,如正则表达式 * 点调用系统命令前对所有传入参数进行命令行参数转义过滤 * 不要直接拼接命令语句,最好借助一些工作做拼接、转义处理,如Node.js的`shell-escape npm`包
还没有评论,来说两句吧...