版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。
http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan
周末有点时间,研究了下define实现权限认证.
使用define验证可以达到最基本的登陆通过认证.
lzy同志用过define验证一个系统是否被允许使用.discuz论坛里也有关于define的使用.
亲自试了一下.
通过一个文件引用另外一个文件.实现权限认证.
做了个简单的登陆,登陆成功后define一个值,然后加载需要权限认证的文件.
成功!!!
直接访问另外的那个文件,失败!!!
然后测试了下远程的安全性.
打开php.ini中的allow_url_include ,这个是控制是否可以远程include文件的.然后include远程的文件(我把那个文件放到测试服务器上),继续登陆.失败!!!.结论:远程破解这种验证方式是不可行的.
这种方式只适合简单权限认证,如果权限系统比较复杂.这个可能就只能用来封装同一模块内文件了.
<!-- 这个是login.php文件,是主要的文件 -->
<?php
/**
* @name login.php
* @date Sun Oct 21 18:33:39 CST 2007
* @copyright 马永占(MyZ)
* @author 马永占(MyZ)
* @link http://blog.csdn.net/mayongzhan/
*/
if (isset($_POST["userName"])) {
if ($_POST["userName"]=="MyZ") {
define("MyZ","logined");
require("mainPage.php");
}
}
else {
echo <<<HTML
<form method="POST" action="login.php" name="loginForm" id="loginForm">
<input name="userName" id="userName" type="text" value="" />
<input name="submit" id="submit" type="submit" value="提交" />
</form>
HTML;
}
?>
<!-- 这个是引用的文件,就是需要权限认证才能访问的文件 -->
<?php
/**
* @name mainPage.php
* @date Sun Oct 21 18:34:53 CST 2007
* @copyright 马永占(MyZ)
* @author 马永占(MyZ)
* @link http://blog.csdn.net/mayongzhan/
*/
if (!defined("MyZ")) {
die("Access Denied");
}
echo "In mainPage! <a href='login.php'>back to login</a>";
?>
v
分享到:
相关推荐
用C语言实现的 预编译器中——#include和#define 操作
题目:宏#define命令练习(1) 1.程序分析:2.程序源代码:#include "stdio.h"#define TRUE 1#define FALSE 0#define SQ(x) (x)*(x)void main(){int num;int again=1;printf("\40: Program will stop if input value ...
_define用法完全集锦/_define用法完全集锦/_define用法完全集锦
动网格,DEFINE_CG_MOTION,DEFINE_GRID_MOTION,很好的模板(dynamic mesh good template)
define用法以及使用。
define与typedef
#define用法集锦 1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME 就定义好了,它代表1000,如果在程序里面写 if(i){.........} 编译器在处理这个代码之前会对MAXTIME 进行处理替换为1000。 这样的定义...
#define 问题 用法陷阱
#define MAXLEN 201 #define LEN 1 #define SPEED1 50 #define SPEED2 100 #define SPEED3 200 #define FOOD1_S1 5 #define FOOD1_S2 10 #define FOOD1_S3 15 #define FOOD2_S1 10 #define FOOD2_S2 20 #define FOOD...
* 下面这些S11-S44实际上是一个4*4的矩阵,在原始的C实现中是用#define 实现的, 这里把它们实现成为static * final是表示了只读,切能在同一个进程空间内的多个 Instance间共享 */ static final int S11 = 7...
DEFINE_DPM_EROSION用于fluent UDF磨损
介绍#define和typedef的区别于使用
const #define inline的用法及区别
详细介绍define用法 Definition[定义]: Usage[用法]: Instances[实例]:
typedef与define的用法,说明typedef和define的区别及各自的特殊用法
介绍C++/C 宏定义(define)中# ## 的含义, 并以C++代码举例说明
define的使用总结。较全面。有需要的可以下载看看。
define 用法 细节
How to define delay in Verilog
使用场合:拼接两个宏,一个是传入的宏。但是传入的宏不会被替换,...#define DEFINE(X) DEFINE_(X) //再次定义 #define PARAM DEFINE(OBJECT) void fun() { // DEFINE_(OBJECT)=100; 这个操作是拒绝的,它就是直接拼