在开始之前我想先在这里提醒选择阅读这篇博客的读者。因为本人初涉安全领域知识。关于漏洞注入尚处于学习和摸索状态,对相关的知识点认识不清或认识不够透彻。此博客亦是只起到对现所学知识的一个记录。所以只起到一个借鉴的作用,并不建议读者用作专业知识学习。

本篇博客讲的是sql注入漏洞的防范,但前提是读者已经具备基本的sql注入漏洞的基础知识(例如什么是sql漏洞注入以及如何构造payload等),这样才能读懂下面提及到的sql注入漏洞防范的相关名词。

sql注入漏洞防范一

lua防止注入 防止sql注入漏洞_lua防止注入


1.当数据库对用户在客户端的输入字符或语句不加限制的读取到并执行时,就产生了sql注入漏洞,自然的当数据库对客户端的输入进行了相关的限制和过滤后,sql注入的风险会大大降低。

lua防止注入 防止sql注入漏洞_客户端_02


利用sql自身所带的转义函数,可以把获取到的客户端语句进行相应的转义。

lua防止注入 防止sql注入漏洞_客户端_03


当然也可以进行过滤,既然测试者在构造payload时需要相关的字符,那将这些字符过滤掉确实是一种方法(当绝不是最好的,因为数据库的更新换代导致字符绝不是一层不变的。)2.第二种方法,自然是使用相应的安全设备,例如防火墙,著名的阿里云盾等

lua防止注入 防止sql注入漏洞_lua防止注入_04


至于什么是好的方法,这里展示专业人员推荐的方法

lua防止注入 防止sql注入漏洞_sql注入_05


PDO即统一的数据库访问接口。它可以防止前端传进来的参数被拼接到sql语句的情况。

正如上图所示,它会将前端输入的参数用占位符“?”来代替,并把这条语句结果先和数据库进行交付,再传参。而不是一起传进去。也就避免了不加节制的拼接前端语句

既然网站服务器存在sql注入漏洞,测试者可以通过相关payload来遍历数据,那在客户端和web 服务之间架一堵防火墙也不失为一种好的方法。一旦访问中存在恶意的字符就会被阻断掉。当然防火墙的设置并不代表后台服务器就允许存在sql注入漏洞,这两者是一种动态的关系需要同时推进。