确实存在SQL注入的可能性,即当未使用预编译时,有可能通过一些技巧绕过安全策略。
以下主要针对MySQL语法进行讨论:
1.大小写混杂
在SQL中,关键词的大小写通常不影响执行。因此,攻击者可能会混杂大小写来尝试绕过某些安全过滤机制。
2.双写绕过
如果服务端检查到敏感词并删除后继续执行,攻击者可以在提交数据时尝试双写敏感词。例如,提交“selselectect”,提交后可能变为“select”。
拓展来说,如果服务端最多检查n次,那么可以进行n+1次双写来尝试绕过。
3.逻辑关键词的相互替换
如果服务端禁止了某个逻辑关键词,攻击者可能会尝试使用其它等价的逻辑关键词替代。
4.注释的相互替换
在SQL中,有多种注释方式。攻击者可能会尝试替换不同的注释方式来尝试绕过安全策略。
5.内部注释替代空格
攻击者可能会使用内部注释来替代空格,以尝试规避某些基于空格的安全检查。
6.内联注释
通过在SQL语句中添加内联注释,攻击者可能试图混淆代码,使其更难以被识别和检测。
7.二次注入
当服务端某个语句未进行预编译,但限制了某些字符或关键词的输入,且该SQL语句中存在对数据库表的查询作为值或条件使用时,攻击者可能会尝试二次注入。他们可以先从其它接口将敏感字符作为值写入数据库,然后请求执行前面的SQL语句。
8.宽字节编码
如果数据库使用的编码和服务端程序的编码不同,可能会导致服务端检查的安全字符在数据库执行时变为敏感字符。这通常发生在服务端使用多字节编码,而数据库将其拆分为多个字节,其中某个字节转为敏感字符(如'或")。
9.进制绕过替代引号
在某些情况下,攻击者可能会尝试使用进制表示法来替代引号,以绕过基于引号的安全检查。
请注意,上述方式仅为说明可能存在的SQL注入手法,并非鼓励或支持任何非法行为。为确保系统安全,建议始终采用最佳安全实践,如使用预编译语句、对用户输入进行严格的验证和过滤等。
上海云盾专注于提供新一代安全产品和服务,以纵深安全加速,护航数字业务的产品服务理念,替身和隐身的攻防思想,运用大数据、AI、零信任技术架构和健壮的全球网络资源,一站式解决数字业务的应用漏洞、黑客渗透、爬虫Bot、DDoS等安全威胁,满足合规要求,提高用户体验。
上海云盾的Web安全加速产品,是一款专注保护游戏、电商、金融、医疗、门户等行业网站/APP/API业务免遭Web攻击、漏洞注入利用、系统入侵、内容篡改、后门、CC和DDoS攻击威胁的安全防护产品,支持HTTP、HTTPS和WebSocket协议,在抵御各类攻击的同时,保障网站业务的快速稳定访问。