<?php/** * 判断用户名密码的函数 此函数不允许返回东西 调用的时候直接调用 用户正常自然没反应 用户不正常,这个函数直接结束程序运行 。*/function checkUserNamePassWord(){$keyStr = "这里是加密字符串,这个串只有你自己知道是什么 。";$key = POST("key"); //这个key是客户端把用户名密码时间加密字符串运算后的结果//用当前日期当第二密钥,这个作用是每天的密钥都不一样 。//即便被拦截了,也算不出规律来,当然源码泄露了就不行了 。//不能太精确,因为客户端与服务器端的时间不可能完全一样 。$keyStr_Today = date('Ymd',time());//访问数据库,一定要用PDO的这个参数方式 。//这个方式在代入数据与直接写在SQL语句里不一样 。//sql注入在这种使用方式下完全不会生效 。$sqlPar['username'] = POST("userName"); //这个没加密的必要,这个在输入框里就能看到,而且也会在很多地方显示 。if($sqlPar['username'] === false || $key === false){//非法调用}//不要在sql里直接比对用户名密码//而且传过来的数据也没有密码//要取出该用户的记录,然后计算后与传过来的加密身份信息对比$sql = "select * from tb_users where userName=:username"; //你可以在这limit 1$rec = db_query($sql, $sqlPar);if($rec['count'] > 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代码文件就行,而且很多函数可以直接使用,不用include任何文件 。
而且这个系统内所有的文件在单独访问时都会出错(可以设置PHP不显示错误信息),而接口文件在参数不正确的情况下也不会有什么具体运行结果 。
也没有默认的首页文档可以访问 。
文件路径和文件名都没规律,在网上都查不到参考 。
那么想黑掉这套API只有两个办法:
0、黑掉服务器操作系统,再从文件系统入手 。
1、破解客户端代码或者拦截访问数据,找到访问规律 。
这两点暂时无能为力解决 。
**边写文档边写代码,头有点乱,可能有遗漏的东西,不知道大家能不能看懂 。
**此API系统还有很多地方可以进一步加密处理,但我个人感觉没必要了 。已经够可以了 。
**此代码没有使用太先进的语法,比如类啊命名空间啊啥的,新版本PHP添了好多特性,但我比较倾向于不去使用它们,我要尽量的让代码对环境没有要求,在尽可能多的版本环境下都能运行 。
毕竟我们要的是安全,而不是让所有人能读懂我们的代码 。
有啥忘了的以后再补充吧 。
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:- 户外健身必备 十件装备
- c语言取子串函数讲解 php字符串拼接函数
- 一个完整的网上商城的源码 php商城系统技术难点
- 为啥国内男子去了朝鲜后 朝鲜为什么不感激中国
- 青悦坊是科创汇(广州健康管理有限公司旗下品牌,也是在国内第一家的健康管理中心
- 九月适合去哪里旅游 国内
- 有什么推荐的向当地人旅游咨询的平台啊,要国内的那种
- apple tv+国内使用教程 ipad tv怎么连接电视
- 信封印刷标准 信封尺寸
- php编程试题及答案 php手册菜鸟教程