后端应用程序中的GET vs POST与SESSION

时间:2013-03-21 13:55:58

标签: php security session post get

嗨,谢谢你的时间。我正在开发一个网络应用程序,我的登录客户将能够观看视频课程。现在我正在使用GET通过URL传递有关视频类型的信息。例如:

用户1拥有硕士课程 - >>>> URL = curso.php?page = master

用户2有基本课程 - >>>> URL = curso.php?page = basic

你知道,我认为这里存在安全问题,因为如果用户2输入他的网址“page = master”,他将能够观看他不允许的视频。

所以我正在为每个页面编写一个安全检查,以查看用户ID可以访问所需页面的ID。

但我认为这是无用的工作。如果我在我的按钮上使用POST方法,并通过POST提交数据,那么假定给定用户不能看到不适合他的内容是否完全安全?毕竟,URL将始终相同,类似于curso.php。

有可能使用Session,但是我可以使用提交按钮或类似的东西定义会话值吗?

我知道,我知道,很多新手问题,但这只是我的第二个后端系统,而且我在这里错过了很多安全措施。

欢迎任何帮助或提示。

非常感谢,抱歉我的英语不好。

4 个答案:

答案 0 :(得分:4)

  

所以我正在为每个页面编写安全检查,以查看用户ID可以访问所需页面的ID。

好。这就是你需要做的。在向用户显示任何数据之前,请检查他们是否有权查看该数据。

  

但我认为这是无用的工作。如果我在我的按钮上使用POST方法,并通过POST提交数据,那么假定给定用户不能看到不适合他的内容是否完全安全?毕竟,URL将始终相同,如curso.php。

在大多数浏览器中,只需不到6次点击即可检查用于发出请求的帖子数据。 POST不会向用户隐藏任何内容,只是避免在脸上挥动它。

  

并且可以使用Session,但是我可以使用提交按钮或类似的东西定义会话值吗?

您无法定义会话值客户端。必须在请求中将数据发送到服务器。

答案 1 :(得分:3)

POST与GET一样不安全。 POST不能用于增加安全性。您必须根据当前登录的用户信息对服务器执行检查。因此,请使用GET,因为这是设计使用HTTP的方式,并在服务器上进行必要的检查。

您需要某种身份验证才能执行所需的操作。

答案 2 :(得分:2)

只是继续使用POST绝对不安全。例如,您可以使用REST工具轻松启动POST请求。

我不知道你是否正在使用底层框架(我建议这样做,因为你基本上要求用户权限管理),但如果不是,我可能会保存用户类或会话中的权限并检查反对给定的参数。

基本上,如果使用POST或GET,则无关紧要。但HTTP表示,如果要从服务器检索数据,则使用GET,如果要将数据发送到服务器,则使用POST。

因此,请使用GET并为自己编写一个很好的类,其中存储经过身份验证的用户的权限,并检查用户是否能够检索所需的内容。

答案 3 :(得分:-3)

无论如何,与Session相比,POSTGET对您的安全性都有很大改善,这是肯定的。但是你仍然需要在你的页面上检查