网站常见安全漏洞
1、漏洞 1)网站的构成 前端:js/vue/react 网关:nginx 后端:go/java/node 前后端交互:http/websocket 2)常见安全事件:数据泄露、服务瘫痪、成果失窃、系统劫持
2、服务端漏洞 后端、sql、rce/命令注入、ssrf 1)第三方组件漏洞 防护模式:针对java可以选择使用dependency-check-maven检查项目以来的组件是否存在安全漏洞 2)SQL注入:非常严重的问题。SQL语句的静态模版和动态数据没有严格区分。数据项中加入了某些SQL关键字,可能会改变整个语义。会把系统里查询出别的 (1)错误写语言框架 (2)【java】mybatis使用【】构建SQL模版、golang中也会存在漏洞。 <select id ="getUserById" resultType="User" parameterType="String"> SELECT id,name,pwd,age FROM t_user_info WHERE id=#{id} </select> 此时使用【#】,实际的SQL语句会产生漏洞 <select id ="getUserById" resultType="User" parameterType="String"> SELECT id,name,pwd,age FROM t_user_info WHERE id={id} 此时使用【$】,实际的SQL语句不会产生漏洞 3)SQL防护模式 尽量不要基于DB的Raw方法拼接SQL语句,而应该使用预编译、ORM框架 使用ORM框架时,注意框架中的特性,可能存在不安全的写法导致的SQL注入问题。在复杂场景中一定要使用拼接SQL,要使用外部输入进行转义。 4)命令执行漏洞 调用命令时,设计命令拼接,若没做好安全过滤则会导致注入风险,服务器权限被控制。 防护模式: 对动态值进行白名单验证。 如果某些位置无法白名单,需要对数据类型进行校验。 特殊字符的黑名单的过滤或者转义。 5)越权漏洞 细分为:未授权、水平越权、垂直越权 6)SSRF服务端请求伪造攻击 7)文件上传漏洞
3、客户端漏洞:前端、xss 1) 输入验证漏洞:未对用户输入的数据进行验证和过滤,导致攻击者可以注入恶意代码或执行恶意操作。 2)跨站脚本攻击(XSS):未正确过滤用户输入的数据,在网页中执行恶意脚本,窃取用户信息或操作用户账号。 3) 跨站请求伪造(CSRF):攻击者通过伪造合法用户的请求,实施未经授权的操作,例如更改密码或执行支付等操作。 4) 不安全的身份验证和会话管理:使用弱密码、未使用加密传输登录凭证、会话标识易受攻击等导致攻击者获取合法用户的权限。 5) 代码注入漏洞:未正确过滤用户输入的数据,导致攻击者可以执行恶意代码。 6) 安全配置问题:默认配置不安全、未及时修补漏洞、未正确配置安全策略等问题可能导致攻击者利用客户端。 7) 不安全的文件上传:未正确验证和过滤用户上传的文件,可能导致上传恶意文件或覆盖系统文件。 8) 不安全的加密和加密算法:使用弱加密算法或使用不当的方式存储加密密钥或密码,增加了被攻击者解密的风险。 4、总结