2

我已经阅读了大量关于 http 帖子和 http get 方法之间区别的文章。我只是对这两者中哪一个在安全性方面是更好的选择感到困惑。因为,有些文章说最好使用post方法而不是get,因为它不允许在url中显示数据。但是也有人说最好用get,因为它不参与数据的更新,它只是用来读取数据并显示它们。那么,我应该选择两者中的哪一个?还是我理解正确?请帮忙,我需要在这里澄清一下......谢谢!

4

4 回答 4

5

GET 和 POST 是方法/动词,并且——正如口语中的动词和编程语言中的方法——它们表示动作。您应该选择最适合该操作的方法。

定义开始:

得到

GET 方法意味着检索由 Request-URI 标识的任何信息(以实体的形式)

邮政

POST 方法用于请求源服务器接受请求中包含的实体,作为 Request-Line 中 Request-URI 标识的资源的新下级。

概括地说,一个 GET 应该检索,一个 POST 应该创建或更新。选择的方法与安全无关;可以适当地保护或完全不安全。

换句话说:仅仅因为 POST 似乎“隐藏”了数据并不意味着它更安全。

我建议还阅读有关REST 原则的信息。

我会进一步建议阅读有关Idempotence 和 Safe methods的内容。请参阅规范的第 9.1 节,将幂等性和无能性直接应用于 HTTP。

于 2013-01-28T09:05:56.667 回答
0

POST 或 get 在安全性方面并没有真正的区别,如果您的代码容易受到注入,POST 或 GET 方法不会有任何区别,甚至您可以说 GET 更安全,因为 GET URL 将完全记录在日志文件中,如果有是代码中的注入,您可以在日志文件中找到整个注入代码/部分,但不会记录 POST 数据。

POST 没有限制并支持多部分帖子,因此您可以使用 POST 上传文件等。但 GET 参数在 apache 中默认有 8000 个字符限制。

POST 将使您的 URL 看起来更清晰,并且您的参数将被隐藏。

于 2013-01-28T09:03:55.873 回答
0

POST 和 GET 是最初用于POST(提交)数据和GET(检索)数据的两种HTTP 请求方法。这被REST大量使用,以及更多的请求方法(如PUTDELETE)。这就是 POST 和 GET 之间的实际区别。

对于网页上的表单,也使用 POST 和 GET。就安全性而言,这并不重要:两者都可以被客户端读取。唯一的区别是使用GET更容易,因为用户可以查看 URL 中的参数。使用POST,您需要从 HTTP 请求正文中提取参数(更多详细信息)。

底线:这主要取决于您想要做什么:您是否希望用户复制 URL 以获得相同的页面?例如,这可能很有用:

http://www.yoursite.com/index.php?search=MySearchTerm

这是一个GET请求,用户可以复制/与他人共享。但是联系表单会赌一个POST请求,因为在 URL 中添加所有联系方式没有任何意义。

于 2013-01-28T09:08:32.353 回答
-1

通过这个你会有一个清晰的想法

礼貌:-维基答案.....

$_POST 和 $_GET 都是用于从 HTML 表单中提取输入的 PHP 变量。但是,不同之处在于 $_POST 对用户隐藏了提取的变量,而 $_GET 则没有。因此,这两个变量在安全性方面存在重大差异。

那你为什么要使用 $_GET 呢?因为有些网站拥有为用户提供完整信息的大型数据库。例如,假设您在网上购物,您去购买 2 条裤子(商品 #125)。您被发送到的 URL 可能如下所示:

目录.php?item=125&quantity=2

如您所见,通过 $_GET 获得的变量对用户是可见的。

POST 方法有可能发送大量数据(通常受服务器设置限制),除非它代表比较 GET 方法的好处,否则可以使用它。很多浏览器无法正确地为 HTTP POST 方法后显示的页面添加书签,因为提交的数据显示在地址栏中。当您需要使用 GET 方法获取的查询字符串时(由于其限制无效),您将尝试对表单使用 POST 方法。如果您提交不应该在地址栏中显示的重要信息,您可以使用 POST 方法。

于 2013-01-28T09:03:18.247 回答