2009-11-30 76 views
9

有什么方法可以通过SQL注入来确认特定的安全违规行为?如何确认SQL注入

+0

你确定它发生了,或者只是可疑? – kurast 2009-11-30 18:19:08

+0

实际上,只有在数据库中的细节正在......所以我首先想到的是数据库可能已被黑客入侵。 – Sachindra 2009-12-05 05:19:02

+0

你有没有试过我建议的? – kurast 2009-12-09 13:30:54

回答

1

发作后已经发生了吗?没有。没有。 你必须检查你的所有sql serevr访问点的潜在风险。 tere是你可以使用的一些工具。在SQL注入工具部分下检查here

0

只有一种可靠的方法可能是分析SQL日志文件。这些应该由DBA完成,他们可以快速发现事情,因为日志的大小会很大。


最好防止这些。

对此有一些tools,但最好的是开发人员的大脑。

坚持一条简单规则 - 生成SQL查询时始终使用参数
只需执行代码审查,并且如果您发现字符串混淆问题 - 这是SQL注入的第一个和高度可能的位置。

+0

该请求使用过去式,我怀疑它已经发生。 – lorenzog 2009-11-30 11:51:17

+0

是的。你是对的。我已经更新了答案。 – 2009-11-30 11:59:44

-2

您可以记录所有http请求并检查GET/POST sql注入试用请求的页面。

7

有没有简单的方法在这里,但如果你有启用SQL服务器你用来记录每一个sql语句,这是我会做的。

正常情况下,当我SQL注入某处时,我使用其中的一个作为我总是正确的语句来传递Threath Where子句,结束前一个字符串。

1=1 
0=0 

都被用作:

blahblahblah' or 1=1 -- 

你不会在日常的代码中使用此条款。所以如果你在你的历史中发现其中的一个,那么它是一个很好的候选人。测试SQL历史发现:

(space)(number)(optional spaces)(equal)(optional spaces)(same number)(space) 

请记住,是启发式,而并不总是可行的,但可能是的唯一办法给出一个暗示这件事已经发生后。另外,如果你对SQL注入有疑问,你应该检查字符串连接和使用参数的代码。

1

使用mod_security记录POST请求并安装入侵检测系统以从现在开始记录/停止可疑活动。记录每个SQL请求是一种开销,如果您只是在寻找违规点。

这些天有IDS的开源替代品。我为我的所有PHP应用程序使用PHPIDS