我目前正在设计和实现PHP中的RESTful API.但是,我没有成功实施我的初始设计.
GET /users # list of users
GET /user/1 # get user with id 1
POST /user # create new user
PUT /user/1 # modify user with id 1
DELETE /user/1 # delete user with id 1
Run Code Online (Sandbox Code Playgroud)
到目前为止标准相当,对吗?
我的问题是第一个问题GET /users.我正在考虑在请求正文中发送参数来过滤列表.这是因为我希望能够在不获取超长URL的情况下指定复杂的过滤器,例如:
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
Run Code Online (Sandbox Code Playgroud)
相反,我希望有类似的东西:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
Run Code Online (Sandbox Code Playgroud)
它更具可读性,为您提供设置复杂过滤器的绝佳机会.
无论如何,file_get_contents('php://input')没有返回请求的请求体GET.我也尝试过http_get_request_body(),但我正在使用的共享主机没有pecl_http.不确定它会有所帮助.
我发现了这个问题,并意识到GET可能不应该有一个请求体.这有点不确定,但他们建议不要这样做.
所以现在我不知道该怎么做.你如何设计RESTful搜索/过滤功能?
我想我可以使用POST,但这似乎不太RESTful.
想象一下,您有一个站点API,它接受带有参数的GET请求形式的数据,或者作为POST请求(例如,使用标准的url编码和&分离的POST数据).如果要记录和分析API调用,GET请求将很容易,因为它们将位于apache日志中.是否有一种简单的方法来获取apache日志中的POST数据?
(当然我们可以在应用程序中显式记录POST数据,但我希望有一种配置级方式,让我不用担心它在代码中.)
我使用Java EE 6(使用参考实现)创建了一个Web应用程序,我想将它作为REST Web服务公开.
背景是我希望能够从Web应用程序检索数据到我制作的iOS应用程序.问题是我如何保护申请?我只希望我的应用程序使用Web服务.这可能吗,我该怎么做?我只需要知道我应该搜索和阅读的内容而不是实际的代码.
好的,我知道目的上的差异.GET是获取一些数据.提出请求并获取数据.POST应该用于CRUD操作,而不是我认为的读取.但是当它归结为它时,服务器是否真的关心它最终是否接收到GET与POST?
这个问题一直困扰着我,所以我正在寻找意见和解决方案,以打击应用程序存在安全风险的可能性.
我使用jQuery做很多事情,但主要是我用它来处理jQuery对话框窗口.很多时候需要从表单上的字段中获取值,使用.serialize()命令连接该信息并将其传递给jQuery ajax调用以转换到PHP文件以进行数据库交互.
这是我的问题(最后),
是不是很容易"猜测"PHP处理的网址是什么样的?
您可以在现代浏览器中打开源,然后单击链接以查看包含ajax调用的完整JavaScript文件.
我可能会缩小JavaScript文件以进行混淆,但这不是一种依赖的安全形式.
我正在使用PDP进行数据库访问,并准备了SQL注入攻击语句,但如果有人花时间查看,他们是否只能形成一个有效的URL将其发送到数据库并插入他们想要的内容?
我不是在谈论将数据库黑客攻击钢铁信息,我更多的是在谈论插入恶意信息,就像从应用程序本身添加数据一样.想想在购物车中添加50美元只需25美元的东西.
如果它就像将ajax请求从GET转换为POST并更改我的PHP文件一样简单?
编辑:此人已登录并已正确验证.
只是想知道其他人在做什么.
谢谢!
一个简短的答案 - 通过ajax向另一个页面发送电子邮件+密码是否有任何安全问题?:)
我的想法是,信息可能会在发送中被抓取,这可能是一个缺陷,相比之下,只需使用带有"链接"到登录操作页面的表单操作"传统方式".
提前致谢..
我想知道我使用哪种 HTTP 方法来开发登录 API,GET 还是 POST?。我已经使用 post 方法在 PHP 中开发了我的登录 API,但是我的老板说,为什么你使用 POST 方法而不是 GET 方法。
正如标题可能暗示的那样,我想知道对于AJAX请求更安全的是什么:POST或GET.我无法解决哪个更好,因为由于URI被发送,它们都隐藏在用户之外.AJAX,不在URL栏中.
谢谢,
詹姆士
几天后,我发现了有关黑客如何通过更改URL中的数字来偷走200,000多个花旗帐户的新闻.似乎开发人员因为RESTful而损害了安全性,并且也没有费心去保持会话ID代替userId.我也正在开发一个安全性是主要问题的产品,所以我想知道在这种情况下我们是否应该避免使用REST并在任何地方使用发布请求?或者我错过了一些关于REST的重要内容?
在过去的几个月里,我自己开发了关于java(servlets和jsp)中的web开发.我正在开发一个主要服务于应用程序的Web服务器.实际上它正在谷歌应用程序引擎上运行.我担心的是,虽然我使用SSL连接,但在URL中发送参数(例如https://www.xyz.com/server?password=1234&username=uname)可能不安全.我应该使用其他方式还是真的安全?我不知道这个url是否作为plaint文本整体传递(带参数)?
任何帮助,将不胜感激!