2012-01-02 69 views
2

我知道这个问题已经被很多人问过,但不幸的是我找不到我的问题的正确答案。如何知道我的网站是否容易受到SQL注入?

在所有的文章,我看了一下SQL注入,他们谈论这样的网址 http://www.example.com/member.php?id=1 以及如何我可以检查我的网站使用(')是容易受到SQL注入。

就我而言,我的网站是这样的: http://www.example.com/Login.php 正如你可以看到我没有ID = 1,我应该怎么做来测试我的网站?

谢谢

+0

你应该真的得到关于这个问题的更多信息。我曾阅读过的关于MySQL注入的每篇初学者文章都提到了这里可能引起人们兴趣的''或''=''技巧。 – 2012-01-02 03:49:00

+0

此外,它最容易检查应用程序的源代码,以检查它是否正确地转义数据库输入。 – 2012-01-02 03:49:37

+4

如果你不得不问,答案几乎肯定是你的网站容易受到攻击。 – RickNZ 2012-01-02 03:49:58

回答

4

您是通过使用查询的硬编码可变部分的受到SQL注入攻击。换句话说,使用命名参数可以防止这种情况。

如果你只是一味地采取串并注入他们到您的查询,而无需参数或卫生条件,你基本上是让公众的人(即潜在的坏人)直接访问编写SQL代码数据库。

SQL注入是一个很难适用于SO答案的主题,所以我强烈推荐Wikipedia article on SQL Injection

+1

我一直认为“硬编码”和“变量”是完全相反的。 +1,因为这是他自己的web应用程序,他应该可以访问源代码。 – 2012-01-02 03:51:14

+0

@NiklasBaumstark我的意思是硬编码变量就像'sqlQuery =“select * from SomeTable where username ='”+ UserNameTextBox.Text +“'”;'。这些就是我认为的“硬编码变量”,因为这是数据库引擎看到的:select * from SomeTable where username ='someuser'。但是数据库引擎应该看到'select * from SomeTable where username = @ userNameVariable'。 – 2012-01-02 03:55:16

+0

好吧,现在我明白了。令我困惑的是,你也可以在查询中使用硬编码的字符串。 – 2012-01-02 03:59:59

0

SQL注入是注入SQL查询,直接进入您的网站预先配置的代码的能力。这可以通过简单的';'来完成。添加符号以追加您的代码,但绝不限于此。

要检查您的网站XSS做的是验证所有的从网页上所采取的输入之前对数据库运行验证的最好的事情。例如,这意味着在您的应用程序的代码中,您正在验证您网站上的发布按钮仅包含您期望的参数,仅此而已。现场验证和限制是您试图限制的主要漏洞。

请勿将您的网页用作验证工具。希望利用XSS的黑客不一定会使用您的页面来执行此操作。这意味着您的业务逻辑就是需要评估的内容。

0

,如果你接受用户输入并使用SQL你很容易受到SQL注入。您是否已经充分保护自己免受SQL注入是另一个问题。

相关问题