在像sql注入这样的编码过程中可以处理的攻击类别是什么?

时间:2015-05-26 10:09:18

标签: security xss sql-injection sanitization input-sanitization

在编码期间或在Web应用程序或本机应用程序中使用sql注入和跨站点脚本(XSS)等代码可以处理哪些类型的攻击?

编辑:由于答案处于暂停状态,我只想要最常见或前5名,可以在编码而不是服务器(托管)或网络或操作系统问题中处理。

编辑2:我已将其缩小为因持有的攻击类别。

1 个答案:

答案 0 :(得分:0)

以下答案与SQL InjectionHTTP Response Splitting有关。

当应用程序在应用程序的行为中直接使用用户输入时,将发生这种利用。这被认为是不好的做法,并为跨站点脚本(XSS),主机标头攻击(修改HTTP请求中的Host标头以执行恶意行为)等事件打开了多个违规应用程序。

那么直接接受用户输入是什么意思?比如说你有一个简单的表单,包含一个Person ID字段和一个提交按钮。一旦提交按钮,系统动态地生成SQL查询以匹配用户所需的信息。

SELECT * FROM Users WHERE PersonID = '$person_id'

这个查询需要采用不正确的假设,即用户应该被信任,这应该永远不会是这种情况。那么为了防止这种情况,采取代码的一个好步骤是什么?准备好的语句,尽可能参数查询。

我从上面的维基百科链接中获取的常见示例:

$mysqli = new mySqli('hostname', 'db_username', 'db_password', 'db_name');
$query = sprintf("SELECT * FROM `Users` WHERE UserName='%s' AND Password='%s'",
$$mysqli->real_escape_string($Username),
$$mysqli->real_escape_string($Password));
$mysqli->query($query);

跨站点脚本(XSS)通常通过编码的特殊字符来缓解,允许浏览器显示实体,但运行它们。下面是一个很好的列表,显示了某些字符的编码方式。我强烈建议您访问this article以进一步了解它,或者查看我在下面提到的Web漏洞词典。

enter image description here

请注意,此处适用与SQL注入相同的概念。用户输入 NEVER 值得信任。

<?php
$name = $_GET['name'];
echo "Welcome $name<br>";
echo "<a href="http://xssattackexamples.com/">Click to Download</a>";
?>

查看上面的示例,您会注意到$name是一个存储变量,后者在代码中直接引用该变量。现在,恶意用户不是查询名称Bob(例如),而是查询<script>alert('attacked')</script>。使用上面的代码,此查询将在Web应用程序中执行上述命令(可能比此更严重)。

HTTP响应拆分

黑客可能能够找到一个标头注入漏洞,它允许他制定一个请求,将整个HTTP主体注入响应和另一个第二个响应主体(可能听起来有点混乱)。本质上,服务器会将此识别为两个单独的请求链接在一起 - 这就是为什么它被称为HTTP Splitting,因为您有效地分割了服务器的响应。

我之所以决定将此漏洞置于此答案中,是因为它是最容易利用的漏洞之一,它不需要大量的知识,并且可以将应用程序打开到XSS等主要漏洞。执行此漏洞的关键字符是%0d%0a - 更正式地称为CRLF(回车和换行),这对许多协议都很重要,因为它标记了行尾(EOL)。 / p>

如果您的Web应用程序没有使用上述方法正确处理此类字符,那么恶意用户可以让他们的输入影响服务器的行为,这显然是我们不想要的。

让我们来看一个局部的例子:

http://www.yoursite.com/somepage.php?page=%0d%0a
Content-Type:text/html%0d%0aHTTP/1.1 200 OK%0d%0a
Content-Type:text/html%0d%0a%0d%0a%3Chtml%3EHacker Content%3C/html%3E

当用户点击上述链接时,该链接将随<html>Hacker Content</html>页面一起提供。有趣的部分?这是通过您的服务器完成的。您易受攻击的服务器正在为受害者提供这种恶意内容。

有关此问题的详情,建议您阅读以下Acunetix CRLF InjectionOWASP's HTTP Response Splitting文章

可以通过多种方式缓解Web应用程序中的漏洞,但在研究特定漏洞之前,最好先了解一下系统结构,以及它本身是否容易受到攻击(许多人都会监督这个问题)。

其余部分完全可以通过互联网获得。我鼓励在Web应用程序安全性方面阅读大量来自不同作者的文章。

我找到的一个非常有用的链接是Acunetix的这个Web Vulnerabilities dictionary,它提供了很好但没有过于详细的描述所需的漏洞,常见的补救技术以及社区文章。