在浏览器输入一个网址链接,来定位一个资源是互联网工作的基础,但是为了网站安全性考虑,对网站进行非法访问是非常的有必要的。今天就来总结一下常用的禁止非法访问的一些实现方式。
大部分网站都会有登陆这么个功能,而基于此功能的一个很重要的模块就是“身份验证”,当然了和OAuth等专业的认证是没法比的啦。这里就是简单的对于用户登陆成功后的一个认证。尤其是在跨页处理一些事务的时候,Session的作用就会更加的明显了,今天就借助于Session来实现一个禁止非法访问的功能。
原理比较简单,用到了两个php文件,index.php的作用是模拟用户登录,然后再session中写入“身份”, 然后再访问该网站其他的页面的时候就会带着这个身份验证进行登录。
<?phpsession_start();$_SESSION['name']='郭璞';echo "Hello ".$_SESSION['name'];
<?phpsession_start();$name = $_SESSION['name'];if(!$name) { echo "403 Forbidden!请您先登录,然后在查看相关的信息!"; die('//-^-\\'); }else{ echo "认证通过了!"; }
没有身份标记时提示相关信息
模拟验证
模拟验证通过后访问资源页面
我个人觉得,根据URL方式来处理的一个比较好的方法是通过路由设置,通过一个路由大总管,处理一切外部请求,想来效果一定会是不错的吧。
下面介绍一下一个简易版的实现,功能就是防外链处理。核心就是通过Referer来实现。这点比较简单,做过爬虫的一下子就会明白了,就不多说哦。
<?php$targeturl = "http://localhost/phpstorm/Test/index.php";if($_SERVER['HTTP_REFERER']!=$targeturl) { //header("Location:".$targeturl); exit; echo "本站防外链哦,请到 <br /> <a href='index.php'>点我访问资源页!!!</a> <br />访问我们的资源哦!"; }else{ echo "可以正常的访问资源页面了!"; }
涉及到的index.php文件简单的设置一个超链接即可,作用就是为资源也添加上一个Referer,来保证资源只能在本站访问的效果。
index.php文件内容
<?php echo "首页哦!"; echo "<h1><a href='url.php'>点我访问资源页!!!</a></h1>";
大致可以通过这种方式实现防止外链的效果,但是如果使用这种方式,维护起来还是比较麻烦的。
简单来回顾一下,在PHP中实现禁止非法访问看起来还是比较容易的,但是实际上这里面的学问还有很多很多,这里演示的不过是冰山一角上那头牛身上的一根微不足道的牛毛罢了。
从实用性的角度而言,各有各的好处,只能说各有利弊吧,不能说那一种更好,只能说哪一种更加适合。
通过添加身份标记的话比较轻便,也更加容易维护;通过URL路由控制的话维护起来比较麻烦,但是灵活性可能会有比较好的效果。
怎么说呢,具体情况具体分析吧。
The above is the detailed content of Detailed introduction to handling illegal access in PHP (picture). For more information, please follow other related articles on the PHP Chinese website!