我为一个项目创建了一个简单的RESTful API,部分遵循了Riyad Kalla的这篇非常好的博客文章.现在,我已经在Stack Overflow上阅读了几十个类似的问题,但我似乎无法找到我的安全问题的答案.
简而言之,我的要求是这样的:
我担心有人使用我的服务可以获取公共API密钥(通过嗅探网络流量),然后简单地通过他们的浏览器使用AJAX直接向开发人员的服务器发出相同的请求.因此,恶意用户可以被认证为合法用户并使用其他秘密API密钥访问API.
我会尝试举一个具体的例子.通常我会这样做:
但我很害怕:
我还缺少什么,或者这只是RESTful API游戏的一部分?
更新:我自愿省略任何形式的时间戳验证,以保持简单,只关注身份验证问题.
更新2:我已经$_SERVER['HTTP_REFERER']为流程添加了验证.这里的目标是客户端必须与请求一起发送引用者,并且它必须与API侧数据库中列出的引用者匹配.不幸的是,HTTP引用可以很容易伪造.这是另一个安全级别,但仍然不完美.
更新3:我已经更改了服务器端代码,将引用者设置为远程IP地址.这会强制发送到我的服务器的每个请求使用秘密API密钥进行哈希处理,最终使用原始请求IP地址到达API服务器.然后可以验证此IP并且请求可以通过.我相信它还可以伪造$_SERVER['REMOTE_ADDR'],但它比假装更复杂$_SERVER['HTTP_REFERER']......我猜还是不完美.
更新4:根据这些帖子:如何伪造$ _SERVER ['REMOTE_ADDR']变量?和https://serverfault.com/questions/90725/are-ip-addresses-trivial-to-forge,$_SERVER['REMOTE_ADDR']虽然很难做到伪造.但是,由于您无法控制伪造的网络,因此无法接收伪造请求的响应.该请求可以成功验证,但其响应不会落入恶意手中.
tl; dr,在这里测试,iOS7无法正确对齐日期输入: http ://cdpn.io/dxjHy
考虑这个HTML:
<input type="date" id="test">
Run Code Online (Sandbox Code Playgroud)
这个CSS:
#test {
-webkit-appearance:none;
-moz-appearance:none;
appearance:none;
text-align:right;
padding:30px;
width:400px;
font-size:20px;
}
Run Code Online (Sandbox Code Playgroud)
iOS7上的Safari不希望右对齐日期输入中的文本.我的观点是Chrome的解释是正确的.关于如何使Safari合作的任何想法?
Chrome 30:

iOS7,iPad上的Safari Mobile:

我正在寻找一个.htaccess文件,让任何请求传递到其原始目标但重定向到特定文件夹(在这种情况下为启动画面)是没有指定目标.我不是很精通,.htaccess也会感激一些帮助.
示例:我正在请求http://www.domain.com/folder/file.php,它应该通过.但如果我要求http://www.domain.com/,它应该重定向到http://www.domain.com/splash/.
我至今正确地重定向到/splash/,但重定向一切来/splash/.
<IfModule mod_rewrite.c>
RewriteEngine On
# If the requested URI is empty...
RewriteCond %{REQUEST_URI} !^$
# ...then redirect to the "splash" folder
RewriteRule .* splash [L]
# Otherwise rewrite the base
RewriteBase /
# If the request is not a folder or a file, redirects to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
谢谢!
编辑:重要的一点是将http://www.domain.com/重定向到 …
我有一个覆盖元素,使用JavaScript附加到文档.这是它的样式声明:
#overlay_mask {
display: none;
position: absolute;
top: 0;
left: 0;
z-index: 9999;
width: 100%;
height: 100%;
background-color: #000000;
}
Run Code Online (Sandbox Code Playgroud)
它的大小正确延伸到窗口的高度,但是当用户滚动时,叠加层不会跟随.
的html和body元件被设置为width: 100%; 和height: 100%.叠加层是文档的第一个子节点.