POST is no more secure than GET over the HTTP protocol. Security-wise, they are inherently the same. Pass secure data encrypted and over SSL.
As far as security [goes], they are inherently the same. While it is true that POST doesn't expose information via the URL, it exposes just as much information as a GET in the actual network communication between the client and server. If you need to pass information that is sensitive, your first line of defense would be to pass it using Secure HTTP. Source
If you are passing $var
over the wire, and you are worried that it could be modified to access another user's data, for example, then you should be performing checking, server-side, whether the user in the session has access to that $var
variable. Usually this is an id
variable you associate with an element on the client-side which is then passed up via AJAX or normal Http Request.
A modification of this variable would return a 404 Not Found if the var is actually an id pointing to something server-side.
Imagine: /resources/24
as your URL. 24 is a unique id. Your first point of call would be to make sure that 24 is allowed to be accessed by the currently logged in user (your data model would normally be used here - your resources table would have a one to many association with a user and you would use that as your basis for authentication).
In effect, POST is no more secure than GET. If you need to pass sensitive information, use https:// and encrypt the sensitive data. Otherwise, do what feels right in the context of the application and authorize against the currently logged-in user server-side.