关于http接口防止非法调用的设计方案
假设有个http接口:
如 http://www.a.com/getBlog.jsp?uid=12
其他系统要调用这个接口取数据:
如果不做安全处理,任何系统只要知道接口地址和参数即可调用。很可能造成非法调用,造成安全问题。
。
为了安全,可以考虑如下方案:
接口调用时增加一个校验参数:如 mcheck=xxxxxx
http://www.a.com/getBlog.jsp?uid=12&mcheck=xxxxxx
校验参数生成规则 假设如下:
md5(uid+"javaboy2012")
参数为uid和某个约定的字符串 经过md5编码后的值。
调用时候:按照生成规则编码后作为参数传递给接口,
http://www.a.com/getBlog.jsp?uid=123&mcheck=8C4E954B6DBD860517B68FAEF37C87CB
借口根据相同的编码规则作判断
getBlog.jsp 文件内容:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@page import="com.yanek.util.MD5"%>
<%
String uid=request.getParameter("uid");
String mcheck=request.getParameter("mcheck");
String commonkey="javaboy2012";
MD5 md5=new MD5();
if (md5.getMD5ofStr(uid+commonkey).equals(mcheck))
{
out.print("成功调用,返回合法数据:!"+uid+"的数据");
}
else
{
out.print("非法调用");
}
%>