SAE Django如何禁止外部IP访问

在SAE上基于Django搭建的Web工程有时需要禁止来自某些特定IP地址的访问请求。

例如一个为搭建在SAE的其他项目提供服务的内部工程,可以设置为只允许SAE内部的IP地址访问,从而提高项目的安全性。

要修改SAE Django工程的访问规则,需要变更工程的WSGI配置文件。

通过向WSGI配置文件添加中间件,可以根据客户端请求信息的IP地址、User-Agent,Referer等属性对访问请求进行过滤。

SAE Django工程根目录1/下的index.wsgi的路由配置源码如下:

#Router
import sae
from mysite import wsgi

application = sae.create_wsgi_app(wsgi.application)

1/mysite/wsgi.py源码如下:

#encoding=utf8
"""
WSGI config for mysite project.

This module contains the WSGI application used by Django‘s development server
and any production WSGI deployments. It should expose a module-level variable
named ``application``. Django‘s ``runserver`` and ``runfcgi`` commands discover
this application via the ``WSGI_APPLICATION`` setting.

Usually you will have the standard Django WSGI application here, but it also
might make sense to replace the whole Django WSGI application with a custom one
that later delegates to the Django one. For example, you could introduce WSGI
middleware here, or combine a Django application with an application of another
framework.

"""
import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

# This application object is used by any WSGI server configured to use this
# file. This includes Django‘s development server, if the WSGI_APPLICATION
# setting points here.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

# Apply WSGI middleware here.
# from helloworld.wsgi import HelloWorldApplication
# application = HelloWorldApplication(application)

import django.core.handlers.wsgi
_application = django.core.handlers.wsgi.WSGIHandler()

def application(environ, start_response):
  content = ‘<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>您访问的网站不存在 - Sina App Engine</title><style type="text/css">body{background-color:#fff}.kc{font-size:16px;text-decoration:none;font-family:"新宋体";color:#333}.ed{width:800px;margin:100px auto}.ec{width:800px;height:207px;margin:10px 0;background-color:#69bee6;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;color:#fff}.et{margin-left:200px;font-size:30px;font-weight:bolder;font-family:"黑体";padding-top:65px}.ex{margin-left:200px;font-size:12px;padding-top:10px}.ex a{color:#fff}.fr{float:right}.fl{float:left}.bt{font-family:Arial;font-size:12px;color:#666}.bt a{color:#666;text-decoration:none}.bt a:hover{color:#69bee6;text-decoration:underline}.ei{margin-left:10px;margin-top:50px}</style></head><body><div class="ed"><div class="ec"><img src="http://lib.sinaapp.com/error_img.gif" class="fl ei"/><div class="et">您访问的网站不存在<br /></div><div class="ex">请检查您所输入的网址是否有误</div></div><div class="fl bt">页面将在 <span id="showtext"></span>秒 内跳转至 <a href="http://yunshangdian.com/?c=wiki&page=intro"> 新浪云商店 </a></div><div class="fr bt"><a href="http://www.sinaapp.com">Powered By SinaAppEngine</a></div></div><script type="text/javascript">/*<![CDATA[*/(function(){var h=10,g=document.getElementById("showtext");this.a=setInterval(function(){this.d()},1000);g.innerHTML=h;this.d=function(){0<h?g.innerHTML=h--:(clearInterval(this.a),window.location.href="http://yunshangdian.com/?c=wiki&page=intro")};this.b=setInterval(function(){this.c()},10);this.c=function(){var d=document.getElementsByTagName("a"),c;for(c in d){d[c].href&&/jiankongbao/i.test(d[c].href)&&(d[c].style.display="none",clearInterval(this.b))}};var b=document.createElement("script");b.type="text/javascript";b.async=!0;b.src="http://exp.jiankongbao.com/loadtrace.php?host_id=10667&style=5&type=1";var f=document.getElementsByTagName("script")[0];f.parentNode.insertBefore(b,f)})();/*]]>*/</script></body></html>‘
  remote_addr = environ.get(‘REMOTE_ADDR‘)
  if remote_addr and not remote_addr.startswith(‘10.67‘):
    start_response(‘600 domain_not_exists‘, [(‘Content-Type‘, ‘text/html; charset=utf-8‘),])
    return [content]
  return _application(environ, start_response)

上述源码对来自SAE外部的(IP地址不以10.67开始)HTTP请求进行过滤,返回信息为600 domain_not_exists。

时间: 2024-10-14 14:07:41

SAE Django如何禁止外部IP访问的相关文章

apache禁止使用IP访问的实现方法

apache禁止访问目录列表 apache禁止访问目录列表对于开发人员来说还是蛮实用的,可以迅速查找根目录下的所有项目,但如果一个挂在互联网上的服务器为了提高安全性就必须禁止访问目录列表. 找到Apache 的 httpd.conf 配置文件将: XML/HTML代码 Options Indexes FollowSymLinks 改为:Options FollowSymLinks 也就是把 Indexes 去掉. 额外信息:在apache中设置虚拟主机 在IIS中我们可以方便的通过不同的IP或者

Nginx 安装配置 禁止使用IP访问 rewrite重写 别名设置 日志轮询

1.yum install pcre pcre-devel -y#支持rewrite重写功能 2.yum -y install openssl openssl-devel#支持https功能 3.useradd nginx -s /sbin/nologin -M#添加用户 4.tar zxf nginx-1.6.2.tar.gz   cd nginx-1.6.2./configure \--user=nginx --group=nginx \--prefix=/application/nginx

php禁止个别ip访问网站

PHP禁止个别IP访问自己的网站,可以看看下面的方法. function get_ip_data(){ $ip=file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".get_client_ip()); $ip = json_decode($ip); if($ip->code){ return false; } $data = (array) $ip->data; if($data['region

SQL Server不能通过外部IP访问,解决方法

SQL Server不能通过外部IP访问,解决方法 版本:SQL server 2017 express with tools 打开配置管理器,开启 TCP,右键属性设置TCP端口: 设置节点: IP1 外部IP/服务器内网IP,比如我的用了192.168.3.101,若要外部访问则一定要用外网IP,并设置端口为1433 IP4 127.0.0.1,并设置端口为1433 IPALL,设置端口为1433 以下为截图: PS:另外配置更改保存后,一定要重启数据库服务器. 原文地址:https://w

用.htaccess禁止某IP访问

代码如下 Order Allow,Deny Allow from all Deny from 125.64.2.46 182.237.3.102 58.215.169.18 114.80.132.9 121.14.48.5 66.249.67.182 94.180.84.186 58.243.40.76 89.123.61.113 116.23.60.197 110.75.172.81 60.215.129.75 允许所有,禁止 XXX,请将里面的IP改成你要封杀的IP地址.并另存为.htacc

nginx禁止使用IP访问

在nginx的访问日志中,会出现只显示IP,而不出现域名的情况,在经过尝试之后,是因为没有设置禁止IP访问导致的. 下面就是在配置文件中设置禁止IP访问,来实现日志文件中$host显示域名. vim /etc/nginx/nginx.conf server { listen 80 default; return 404; } nginx -t systemctl reload nginx 或者:nginx -s reload 查看日志.能够成功即可. 原文地址:https://www.cnblo

iptables禁止来源IP访问限制

#屏蔽公网 iptables -I INPUT -p tcp --dport 2222 -j DROP  #只允许某ip访问指定端口 iptables -I INPUT -p tcp --dport 2222 -s 123.123.123.123 -j ACCEPT  #添加白名单 允许某IP 访问此服务器 iptables -I INPUT -s 12.12.12.12 -j ACCEPT

服务器IIS禁止通过IP访问

之前发布的网站,只是配置端口信息,IP都选择的是*,所以一直没有考虑IP能访问的事情. 现在有个需求,就是只能通过域名访问,不能通过IP访问,那么做法就是给这个主机名添加上解析的域名,IP自然就失效了 原文地址:https://www.cnblogs.com/Rexcnblog/p/8778097.html

VS配置IISExpress外部IP访问

最后以管理员运行 netsh http add urlacl url=http://192.168.1.7:7088/ user=everyone 重启vs  就可以用ip 访问啦 注意: 删除用 netsh http deleteurlacl url=http://192.168.1.7:7088/ user=everyone 原文地址:https://www.cnblogs.com/zhang-wenbin/p/12566761.html