我是初级的sql和所有的sql注入,我有一些问题。
我有一个网站,它是用ASP.net c#写的。
- when i say select statement i mean somthing like: select top 10 \* from configoration where accountid=10
请告诉我,我是个三年级学生,所以要和蔼点。
发布于 2015-06-10 21:53:38
您所描述的不是真正的"SQL注入“,而是真正的代码注入器。您担心黑客可能输入可执行代码(可能是JavaScript),这些代码在呈现内容时会被执行。
SQL注入是黑客格式化输入以重定向后端SQL语句以执行恶意操作的时候。例如:
sql = "SELECT * FROM User WHERE ID = '" + ID + "' AND Password = '" + PASSWORD + "'"如果ID包含"' OR 1=1 -- ",那么您将得到以下命令:
SELECT * FROM User WHERE ID = '' OR 1=1 -- AND Password = ''因此,所有用户都会返回,因为其余的SQL实际上被注释掉了。
使用参数可以保护您免受SQL注入的影响--这并不能保护您不受代码注入的影响--这需要非常小心地在HTML中呈现可能被执行的数据。最安全的方法是只对输入进行HTML编码,以便将像<script>这样的数据转化为无害的<script>文本。如果您确实希望允许一些HTML标记(如<strong>),但不受代码注入的影响,则需要检查测试,寻找潜在的危险标记,并在必要时将它们去掉。
发布于 2015-06-10 21:53:47
有许多方法可以执行sql注入,为了更好地理解其背后的概念,我将坚持一个非常基本的示例。
通常,您需要查看post请求并分析正在发送到服务器的查询。例如:如果你想黑一个登录页面。我将在登录表单本身上执行下面的SQL语句
从用户名=‘admin’和密码=‘OR '1'='1’的用户中选择*
这一声明也可以这样读:
从用户名=‘admin’和密码=‘’OR TRUE的用户中选择*。
有了上面的查询,我将能够登录到您的系统。我还可以进一步更改查询,以获得数据库中的用户列表,甚至删除整个表。
发布于 2015-06-10 21:53:54
下面是SQL注入的工作方式。假设您有一个请求username和password的登录页面。收集用户名和密码后,需要验证凭据是否正确。为此,需要调用数据库。如果Joe出现并登录,您的身份验证SQL可能如下所示:
SELECT * FROM [Users] WHERE [UserName]='joe' AND [Password]='xyz123'看上去很好,工作也很好,对吧?不!
让我们说乔是个邪恶的黑客。他希望删除数据库表中的所有行。他没有在表单上输入用户名或密码,而是键入以下内容:
UserName: joe
Password: '; DELETE FROM [Users]; --现在,当您的SQL语句被发送到Server时,如下所示:
SELECT * FROM [Users] WHERE [UserName]='joe' AND [Password]=''; DELETE FROM [Users]; --'猜猜看!乔刚删除了你所有的行!
为了防止这种情况,最终发送到SQL服务器的任何输入都会被参数化。这样做,你的弦就可以逃脱,像乔这样邪恶的人也不会破坏你一生的工作。
https://stackoverflow.com/questions/30767792
复制相似问题