用PHP做服务器接口客户端用http协议POST访问安全性一般怎么做

具体来说,现在用的是iPhone进行连接,但这不重要

我的问题是,如果不做安全相关处理的话,一些可能改变数据库的操作可能会遭遇垃圾数据提交什么的,毕竟要找到这些信息只要找个http包就可以了

系统无用户登录

新手问题(从来没做过服务端开发),如果可以,给几个主流方法的链接,多谢

阅读 33.1k
4 个回答

这个必须要做,隐藏在app里的接口如果没有认证,现在hack app的人这么多,很快就会被人发现,用来直接操作数据库。

直观总结方法二:

1.请求头里带用户username和password,到服务器端做验证,通过才继续下边业务逻辑。
有点:防止了服务器端api被随意调用。
缺点:每次都交互用户名和密码,交互量大,且密码明文传输不安全。

2.第一次请求,要求username和password,验证通过,种cookie到客户端,app保存cookie值。
每次请求带上cookie。
点评:和pc上浏览器认证的原理一样了。

以上两点,只有注册用户,才能有权访问业务逻辑,而app有大量的不需要注册数据api

3.制定一个token生成规则,按某些服务器端和客户端都拥有的共同属性生成一个随机串,客户端生成这个串,服务器收到请求也校验这个串。
缺点:随机串生成规则要保密。
比如:一个使用php框架的工程,框架每次交互都会有 module和action两个参数做路由,这样的话,我就可以用下边这个规则来生成token

app要请求用户列表,api是“index.php?module=user&action=list”
app生成token = md5sum ('user'.'2012-11-28'.'#$@%!'.list) = 880fed4ca2aabd20ae9a5dd774711de2;
实际发起请求为 “index.php?module=user&action=list&token=880fed4ca2aabd20ae9a5dd774711de2”

服务器端接到请求用同样方法计算token,

<?php
$module = $_GET['module'];
$action = $_GET['action'];
$token = md5sum($module.date('Y-m-d',time()).'#$@%!*'.$action);
if($token != $_GET['token']){
    alarm('access deny');
    exit();
}
?>

先提这三个,都在项目中用过。

垃圾数据的提交,永远没法完全屏蔽。可以想办法提高上传垃圾数据的难度。

参照防御CSRF攻击的方法,在用户提交数据前要请求一个token(比如一个随机字符串+时间戳的md5值),然后用户提交数据的时候要同时提交这个token,并且进行验证,验证成功才能写入数据库。

新手上路,请多包涵

之前做过一个app初次登陆是服务端校验用户名和密码返回一个token,接下来的每一个请求需要将用户的id和token作为参数进行验证。如何换到web端。web端如果采用签名方式,如何保证签名算法的安全性的问题,最近在做项目,想想如果客户端和服务端直接进行接口的交互安全性最高的还是session.求指导大家开发app或者web api一般都是怎么个做法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
101 新手上路
子站问答
访问
宣传栏