企业博客
端隐SDP作为一个安全产品,自身的安全如何进行保障?采用了哪些安全防护?我们先给大家简单列举几个常见漏洞,看端隐SDP如何来进行防护。
由于任何的数据库操作都需要用到SQL语句,因此端隐SDP自然避免不了对曾经的漏洞之王——SQL注入进行防护。SQL(Structured Query Language injection)注入,是发生于应用程序与数据库层的安全漏洞。简言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,因此注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,从而遭到破坏或是入侵。通俗来讲,就是在正常的SQL语句中注入恶意SQL语句。
SQL注入的危害
如何防护SQL注入
目前防护SQL注入,主要有两种方式,一是完全使用参数化查询,也就是预编译;二是对传入的参数进行过滤。现在主要手段还是采用预编译的方式进行防护,第二种方式由于是过滤,存在被绕过的风险。当然预编译也不是万能的,如果代码不按规范写,仍然有SQL注入的风险,如最常见的like查询。
端隐SDP如何防护SQL注入
端隐SDP在对SQL注入的防护上主要采用了三种方案:数据库采用K.V的方式进行存储、自研的数据库操作框架、SQL预编译;其核心也正是采用了预编译的手段。
1.数据库k.v存储
端隐SDP把所有的表名、字段名都采用K.V的方式进行存储,每张表都有对应的hash。即使遇到SQL注入,攻击者也很难把想要的数据全部找出。
2.自研的数据库操作框架
端隐SDP使用了自研的数据库框架,用来配合我们特殊设计的K.V数据库进行数据的存储和查询。除此之外,这样做还有一个好处是可以防止因为框架自身漏洞导致的SQL注入攻击。
3.SQL预编译
SQL预编译是目前对SQL注入防护最好的方案,用了SQL预编译之后,之后注入的参数将不会再进行SQL编译。也就是说之后注入进来的参数系统将不会认为它会是一条SQL语句,而默认其是一个参数,参数中的or或者and等就不是SQL语法保留字了。
预编译效果
下面我们找个接口来看看预编译的效果:
1.先在服务器上把SQL日志记录打开(默认是关闭的)
2.用命令tail -f查看实时日志
一目了然,我们可以很明显的看到,前面说的K.V存储结构和hash过的表名。
3.测试查看用户详细信息接口抓包,先正常请求:
可在日志里面看到传入的值
惯用手法加个'看看
可以明显的看到预编译的效果,把'转义了。
目录穿越,是通过使用 ../ 等目录控制序列或者文件的绝对路径来访问存储在文件系统上的任意文件和目录,特别是应用程序源代码、配置文件、重要的系统文件等。通俗来讲,就是可以从当前目录跳到任意目标目录中。
目录穿越漏洞危害
目录穿越通常伴随着别的漏洞出现,一般是文件相关的漏洞,如:任意文件上传、任意文件下载、任意文件读取、任意文件包含。这里我们用"任意文件上传"简单举个例子,如果发现一个文件上传漏洞,这时候可以配合上目录穿越漏洞,把你上传的文件传到任意目录中。
如何防护目录穿越
目录穿越主要的防护方式有以下两种:
1.过滤 . (点) / (斜杠) \ (反斜杠);
2.限制访问权限在指定区域。
如果是上传的话,最好把外部传入的文件名重新命名,可防止被%00截断或别的特殊文件名导致安全问题。
端隐SDP如何防护目录穿越
端隐SDP对于目录穿越的防护采用了以上提及的方案,简单给大家看一小段代码:
以上是有关端隐SDP对于常见漏洞的防护,而对于信息泄露的防护,端隐SDP又是怎么做的呢?
此处的信息泄露,不是指个人信息泄露,而是会威胁到企业安全的敏感信息泄露,所涵盖的范围很广,如:员工凭证泄露、源码泄露、组织架构信息泄露、网络拓扑信息泄露、服务器信息泄露、数据库信息泄露等。一旦出现信息泄露,都会直接或间接的危害到企业安全。
端隐SDP如何防护信息泄露
企业对于信息泄露,其实很难做到百分百防护,我们能做的只是尽可能多的增加安全措施,以降低信息泄露的风险。端隐SDP内部目前已有的防护措施主要有这几类防护:部署Github信息泄漏监控系统、自研的web框架、员工常规风控培训、持续安全测试。
1.Github信息泄漏监控系统
部署监控Github代码仓库的系统,并通过监控Github及时发现企业内部代码泄露,从而降低由于代码泄露导致的一系列安全风险。
2.自研Web框架
3.风控培训
新人入职、版本更新、系统更新时,都会有对应的风控培训。定期培训风控相关安全知识,以增加安全意识、降低信息泄露风险。
4.持续安全测试
产品上线前都会进行全方位的安全测试,通过后方可上线;安全部门还会持续对系统进行白盒审计、fuzz测试、自动化扫描等安全监测。