如何为API接口文件选择合适的命名及安全措施指南

如果你的环境中有很多主页设置,比如index.php、index.html、default.html、default.php等,那么你的API接口文件一定不要使用这些。例如,可以使用iLaoZhao_XX_api.php,这谁能猜到?

如何为API接口文件选择合适的命名及安全措施指南

1.不要使用SESSION和COOKIE。

COOKIE以明文形式存在于用户端,易于查看和修改。每个人都知道这一点。 PHP的SESSION也依赖COOKIE来存储SESSION_ID。而我们的API每次访问都需要返回一次数据。很多访问方式不存储COOKIE,这会导致SESSION失效。

2. 每次访问时验证用户名和密码。

现在比较流行的是Token方式。我也懒得去研究了。最好每次都验证用户名和密码。这样,密码泄露后,只要我改一个密码,在对方就无法再使用了。无需等待他的信息过期。当然,我们不能以明文形式传输这些东西,需要做一些加密。

3、不允许单个文件正常运行。

资源文件夹不能包含任何可执行文件。并尝试将其分成尽可能多的文件。所有文件都相互依赖,组织它们的文件是另一个单独的文件。这样,即使别人知道我们的文件路径和文件名,也无法正常访问该文件。跑步。

4. 不允许单个文件单独实现任何功能。

要实现某个文件中的函数,必须依赖于其他文件中的函数或类,而当前文件无法知道这些函数和类是在哪个文件中实现的。这样,即使这个文件的源代码被泄露,对方也不会知道里面的依赖关系,也不会影响到其他文件。

5. 身份验证不成功时,不会输出错误信息。

当用户名和密码不正确时,系统不应该输出任何有用的信息,或者输出假的404消息,这样当别人测试我们的系统时,他们不会知道哪一步出了问题,而我们的客户端可以通过码字来确定状态。

让我举一个小例子来说明。这个小例子只是一个起点,并不是我的最终代码的样子。

文件树结构:

老赵API文件树形结构

根目录只有一个文件夹,整个API系统是通过一个接口文件“DaYeLaiWanA.php”来调用的。

怎么样?不了解文件结构的人无法猜测你有哪些文件,也无法访问任何文件。

下面的代码没有使用太高级的语法,比如类、对象、命名空间等。新版本的PHP添加了很多功能,但我宁愿不使用它们。我想尽力做出没有环境要求的代码。可以在尽可能多的版本环境中运行。

毕竟我们要的是安全,不是每个人都能读懂我们的代码。

我们应该尽量不使用课本上常见的写作方法,而尝试发展自己的写作方法。

以下是DaYeLaiWanA.php的代码:

为了方便大家,我在文件上写了注释。这些注释不应包含在实际使用中。这些注释只能方便别人破解我们的系统,而这个接口文件应该尽可能的进行代码混淆和加密。

然后有一个小例子API来获取当前用户信息。该API文件存储在/iLaoZhao_api/public/login/usrMsg.php中。调用时的URL大概是这样的:

https://你的域名/iLaoZhao_api/DaYeLaiWanA.php

POST数据为:{
key:"用户名密码时间加密字符串运算后的结果",
class:"login",
fun:"usrMsg",
userName:"该用户的用户名"
}

usrMsg.php的API代码内容为:

 0){
		output2Die("成功。",1,$rec);
	}else{
		output2Die("找不到该用户。",-1); //要求高的,不要输出错误信息。
	}
}
output2Die("失败",-2); //要求高的,不要输出错误信息。

这里的 checkUserNamePassWord() 函数(在 iLaoZhao_funs 文件夹中的 login.php 文件中)也很关键:

 0){
		
		$keyInDB = md5(md5($keyStr).md5($rec['rows'][0]['userName']).md5($keyStr_Today).md5($rec['rows'][0]['passWord']));
		//上面这句是加密方式,把加密字符串、用户名、当前日期、密码的MD5连接起来并再计算一次MD5
		//当然你还可以再加点别的东西,比如字符串反转,以及其它变量之类的。
		//上面这句计算出来的和$key中的一样时,说明密码是对的。
		if($key == $keyInDB){
			//用户名密码对
			//此时我们啥也不做
			//或者你想设置某些变量也行
		}else{
			//否则
			die(); //结束程序运行,
		}
	}
}

代码中有注释,大家应该能看得清楚。还有其他自定义函数,我不会包含其代码。

这样,我们在扩展API的时候,只需要在对应的路径下编写PHP代码文件,很多功能就可以直接使用,不需要包含任何文件。

而且这个系统中的所有文件单独访问时都会出错(PHP可以设置不显示错误信息),并且如果参数不正确的话接口文件不会有任何具体的操作结果。

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

53阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

44阅读

php一句话木马,一句话木马ctf

2026年10月05日

48阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

50阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

47阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

42阅读