漏洞分类
网站漏洞:
1.服务端漏洞
SQL(SQL注入): 在数据项中加入某些SQL语句关键字,这些SQL语句就可以在数据库写入或读取时得到执行。
防护方式:
- 尽量不要基于DB的raw方法拼接构造SQL语句,而使用预编译框架
- 使用ORM框架时,应该主义框架中的特性,可能存在不安全的写法导致SQL注入
- 在复杂场景一定要使用拼接SQL
命令注入: 代码中遇到需要调用某个命令完成的功能时,需要命令拼接,如果没有安全过滤,会导致命令注入风险。
防护方式
- 对动态值设置白名单验证
- 对数据类型进行校验
- 特殊字符黑名单的过滤,或者转义
SSRF 服务端请求伪造,通过该漏洞向服务器请求发送并获取内部资源
防护方式
- 对url的host进行白名单过滤,获取对host解析的ip进行判断,是否是内网地址
文件上传: 找到公开的上传点,上传恶意文件,获取图片url,然后直接分享url至
防护方式
- 限制文件类型: 如果系统只需要图片类型,可以从服务端解析文件格式,限制只能传入特点的文件格式
- 站库分离:应用部署的文职和上传的文件分离,一般可以使用TOS,OSS等进行文件存储
- 防止图床:对图片访问连接进行限制,包括时间限制,访问身份限制等
2.客户端漏洞
XSS: 跨站漏洞,恶意攻击者会在 Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。跨站脚本攻击是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户在浏览网页时会受到影响,恶意用户利用xss 代码攻击成功后,可能得到很高的权限、私密网页内容、会话和cookie等各种内容
CSRF:CSRF (Cross-site request forgery,跨站请求伪造)也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。
简单的说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己以前认证过的站点并运行一些操作(如发邮件,发消息,甚至财产操作(如转账和购买商品))。因为浏览器之前认证过,所以被访问的站点会觉得这是真正的用户操作而去运行。