登陆

用户

上一篇:php - 为什么很多第三方接口,都改成了基于http,直接传递json数据的方式来代替webservice? 下一篇:不使用三方包时,如何在ThinkSNS中建立优雅的用户权限管理

PHP如何禁止外网访问

荣华软件  917  1   2017-12-21 16:08

某个PHP文件,如果禁止外网访问,即这个PHP仅限服务器访问
因为很多数据需要用到定时任务定时运行php脚本生成,以防外网或蜘蛛运行此PHP而生成错误的数据,所以需要屏蔽外网,只限服务器访问。

1条回答

  • 管理员2

    一般直接对外服务的服务器,都是由Web服务器接受HTTP请求,然后再转给mod_php或者php-fpm解释执行PHP程序。这意味着完全可以在Web服务器上限制。Apache服务器的限制方法 @iefsou 君已经提供了,我来写个nginx的限制配置: location /uri/path/to/your/script.php { allow 192.168.0.0/16; allow 172.16.0.0/12; allow 10.0.0.0/8; allow 127.0.0.0/8; deny all; } 这个方法也可以用在外网限制个别IP可以访问,具体请参考nginx的access模块配置手册。 当然,在PHP程序里限制也不是不可以,按同样的方式判断用户的IP是否局域网IP: function is_local_ip($ip_addr = null) { if (is_null($ip_addr)) { $ip_addr = $_SERVER['REMOTE_ADDR']; } $ip = ip2long($ip_addr); return $ip & 0xffff0000 == 0xc0a80000 // 192.168.0.0/16 || $ip & 0xfff00000 == 0xac100000 // 172.16.0.0/12 || $ip & 0xff000000 == 0xa0000000 // 10.0.0.0/8 || $ip & 0xff000000 == 0x7f000000 // 127.0.0.0/8 ; } 如果不是来自局域网,你就header输出个403或者显示个错误页面给他看就行。 值得一提的是用PHP的方法判断会导致请求必须交给PHP解释器,然而PHP解释器的性能比nginx直接返回403要差得太多,具体可以自己压测一下。当然如果是在开发给客户自己安装的产品就不要让没经验的小白客户们改服务器配置了。

    2017-12-21

登陆后可回复

  1. 登陆
  2. 注册
服务热线

400-692-8081

售前咨询(09:00-18:00)

联系我们

名称:烟台荣华软件科技有限公司

地址:烟台市高新区航天路101号C栋5楼516

座机:0535-3458081

邮箱:001@rongsoft.com

Q Q:327195471

Copyright@2018 烟台荣华软件科技有限公司 版权所有 鲁ICP备14003838号-1