zoukankan      html  css  js  c++  java
  • 用PHP做服务器接口客户端用http协议POST访问安全性一般怎么做

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

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

    系统无用户登录

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

    直观总结方法二:

    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] view plain copy
    1. <span class="preprocessor" style="color:rgb(153,153,153); font-weight:bold"><?php</span>  
    2. <span class="variable" style="color:teal">$module</span> = <span class="variable" style="color:teal">$_GET</span>[<span class="string" style="color:rgb(221,17,68)">'module'</span>];  
    3. <span class="variable" style="color:teal">$action</span> = <span class="variable" style="color:teal">$_GET</span>[<span class="string" style="color:rgb(221,17,68)">'action'</span>];  
    4. <span class="variable" style="color:teal">$token</span> = md5sum(<span class="variable" style="color:teal">$module</span>.date(<span class="string" style="color:rgb(221,17,68)">'Y-m-d'</span>,time()).<span class="string" style="color:rgb(221,17,68)">'#$@%!*'</span>.<span class="variable" style="color:teal">$action</span>);  
    5. <span class="keyword" style="font-weight:bold">if</span>(<span class="variable" style="color:teal">$token</span> != <span class="variable" style="color:teal">$_GET</span>[<span class="string" style="color:rgb(221,17,68)">'token'</span>]){  
    6.     alarm(<span class="string" style="color:rgb(221,17,68)">'access deny'</span>);  
    7.     <span class="keyword" style="font-weight:bold">exit</span>();  
    8. }  
    9. <span class="preprocessor" style="color:rgb(153,153,153); font-weight:bold">?></span>  

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

  • 相关阅读:
    复制出一个同样的窗体
    DBEdit的OnChange事件(100分)
    delphi中DBEdit,数据的修改和提交
    delphi 根据DELTA自动生成SQL语句
    clientdataset生成sql
    在delphi中生成GUID/自动获取临时表名......
    如何得到表的主键名称(字段名称)
    通用的更新方法 THlsImplBase
    Delphi中ClientDataSet的用法小结
    ORACLE 字符串补零
  • 原文地址:https://www.cnblogs.com/YangFuShun/p/6795970.html
Copyright © 2011-2022 走看看