如何保护django源码(django 代码保护)
请教django中FileField源代码的一些问题
/*******************connect()*********************/
//设置服务器地址结构如何保护django源码,准备连接到服务器
memset(server_addr,0,sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_addr.s_addr = inet_addr(argv[1]);
err = connect(sockfd,(struct sockaddr *)server_addr,sizeof(server_addr));
if(err == 0)
printf("client : connect to server\n");
else
printf("client : connect error\n");
return -1;
//与服务器端进行通信
memset(recvline,0,sizeof(recvline));
if( (n=read(sockfd,recvline,Buflen))0 )
recvline[n]=0;
printf("%s",recvline);
write(sockfd,cmd,strlen(cmd)); //这里相当于在pyth.py如何保护django源码的标准输入上输入数据
while( (n=read(sockfd,recvline,Buflen))0 )
recvline[n]='\0';
printf("%s",recvline);
close(sockfd);
编写服务端tcpServer.c如下。
l tcpServer.c
点击(此处)折叠或打开
哪些网站由django开发,并且有源码
采用了MVC的软件设计模式,即模型M、视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。
最近在进行网站代码审查的过程中,发现某些产品由于session使用不当,导致可能被攻击者利用,执行任意代码。这些产品在登录的JS代码中,泄露了SECRET_KEY,将该值作为密码加密的盐,这样就暴露了加密salt不太好吧,更重要的是对django的安全造成了极大的威胁。
1、SECRET_KEY作用
SECTET_KEY在djanog中使用非常广泛,基本上涉及到安全,加密等的地方都用到了,下面列举一些常见情景:
1.json object的签名 2.加密函数,如密码重置,表单,评论,csrf的key,session数据
这里面就要重点讲到session的问题,在这里使用不当就会导致代码执行。
2、代码执行
2.1 settings的session设置
django默认存储session到数据库中,但是可能会比较慢,就会使用到缓存,文件,还有cookie等方式,如果采用了cookie机制则有可能代码执行,settings配置如下:
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
2.2 django 1.6以下
在django1.6以下,session默认是采用pickle执行序列号操作,在1.6及以上版本默认采用json序列化。代码执行只存在于使用pickle序列话的操作中。
2.3 session处理流程
可以简单的分为两部分,process_request和process_response,前者负责选择session引擎,初始化cookie数据。见代码:
class SessionMiddleware(object): def process_request(self, request): engine = import_module(settings.SESSION_ENGINE) session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)
process_response则是处理返回给用户的cookie信息,比如修改过期时间等。在将session存入缓存后,可能在某个操作中会用到session信息,这个时候就会通过反序列化操作从缓存中取,如果反序列话引擎是采用pickle机制的话就存在代码执行。反序列化的代码位于django.core.signing.py中,这个模块主要是一些签名,加解密操作,同时也包含序列化和反序列化,默认采用JSON引擎,下面是反序列话loads的代码:
def loads(s, key=None, salt='django.core.signing', serializer=JSONSerializer, max_age=None): """ Reverse of dumps, raises BadSignature if signature fails """ base64d = smart_str( TimestampSigner(key, salt=salt).unsign(s, max_age=max_age)) decompress = False if base64d[0] == '.': # It's compressed; uncompress it first base64d = base64d[1:] decompress = True data = b64_decode(base64d) if decompress: data = zlib.decompress(data) return serializer.loads(data)
怎么解决django的防csrf?
django post出现403的解决办法 据说如何保护django源码,从django1.x开始,加入了CSRF保护。
CSRF(Cross-site request forgery跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。-------来自百度百科
报错:Forbidden (403)
CSRF verification failed. Request aborted.Help
Reason given for failure:CSRF token missing or incorrect.
In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure:
Your browser is accepting cookies.
The view function uses RequestContext for the template, instead of Context.
In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.
You're seeing the help section of this page because you have DEBUG = True in your Django settings file. Change that to False, and only the initial error message will be displayed.
You can customize this page using the CSRF_FAILURE_VIEW setting.
在网上找解决办法,说是提交参数中要有csrf_token,才能成功。但网上都是1.3或者1.4版本的解决办法,在1.5版本中测试已经不能用了。
在1.5.1版本,我测试可行的解决办法有三种:
一:
关闭csrf保护功能。为视图函数添加@csrf_exempt修饰符。
from django.views.decorators.csrf import csrf_exempt@csrf_exemptdef view(request): #your code..... 当然这样不安全。
二: 在模版文件中,每个form提交域中都加上{% csrf_token %}标签,并使用render函数返回视图,或者强行使用RequestContext 代替Context。例: from django.shortcuts import renderdef contact(request): form = ContactForm()#这里我使用了一个django的表格 return render(request,'contact.html', {'form': form})
或者:
from django.shortcuts import render_to_responsedef contact(request): form = ContactForm()#这里我使用了一个django的表格 return render_to_response('contact.html', {'form': form}, context_instance=RequestContext(request) )
contact.html的内容:
htmlheadstyle type="text/css" ul.errorlist { margin: 0; padding: 0; } .errorlist li { background-color: red; color: white; display: block; font-size: 10px; margin: 0 0 3px; padding: 4px 5px; }/style titlesend/title/headbody h1Contact us/h1 form action="" method="post" {% csrf_token %} div class="1f65-684a-af86-c23a field" {{ form.subject.errors }} label for="id_subject"工作:/label {{ form.subject }} /div div class="684a-af86-c23a-0bf6 field" {{ form.email.errors }} label for="id_email"你的邮箱地址:/label {{ form.email }} /div div class="af86-c23a-0bf6-8972 field" {{ form.message.errors }} label for="id_message"消息:/label {{ form.message }} /div input type="submit" value="Submit" /form/body/html
三:
方法二显然只能限制在django模版中使用,那如果我们使用javascript或者AJAX的时候呢如何保护django源码?怎么添加csrf_token呢?
我们可以使用javascript来提取cookies中的csrf_token。
function getCookie(name) { var cookieValue = null; if (document.cookie document.cookie != '') { var cookies = document.cookie.split(';'); for (var i = 0; i cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); if (cookie.substring(0, name.length + 1) == (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; }
或者这个好理解的:
function getCookie(sName){ var aCookie=document.cookie.split("; "); for(var i=0;iaCookie.length;i++){ var aCrumb=aCookie[i].split("="); if(sName==aCrumb[0])return (aCrumb[1]); } return null;}
AJAX中这样用: $.post(url, {"csrfmiddlewaretoken":getCookie('csrftoken')}, function (data) {alert(data);});
但是有一个问题,当有一个新用户访问这个页面的时候,cookie里并没有csrftoken这个值。只有进行第二种方法,才能在cookie里生成csrftoken值。解决此问题的方法随后更新。
完全可以满足简单的建站需要。
django源码可以修改吗
当然可以如何保护django源码,开源的东西,随便改。
但是,第一,如何保护django源码你有能力改么如何保护django源码?
第二,你因为什么需求要改它?
第三,与其改它,不如自己写一个新框架,或者换个框架。
更多Django内容,推荐刘江的Django教程
django如何删除被保护的protected外键
将 list_filter 中如何保护django源码的外键字段改为 foreign_key__related_fieldname 这种形式就可以如何保护django源码了。 这种用法适用于 ForeignKey 及 ManyToManyField 。
Django generics view 以及看源码为什么这么重要
可以扩展Spring的PropertyPlaceholderConfigurer,摘录别人一段代码你参考public class DecryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer{ /** * 重写父类方法,解密指定属性名对应的属性值 */ @Override protected String convertProperty(String propertyName,String propertyValue){ if(isEncryptPropertyVal(propertyName)){ return DesUtils.getDecryptString(propertyValue);//调用解密方法
当我用django的超级用户登录时候,出现CSRF的错误,如图,怎么解决啊??
需要在form后面加上csrf_token。如:
form method="post"{% csrf_token %}
xxx
/form
或者修改django源码:django/middleware/csrf.py process_view
在“# If the user doesn't have a CSRF cookie”上面增加以下代码:
if request.path.startswith('/admin'):
return accept()
如果django版本为1.2.5如何保护django源码,则修改为:
if request.path.startswith('/admin'):
return self._accept(request)
这表示 请求url是/admin如何保护django源码的话,即使form后面没带csrf_token也可以访问。
如何删除Django
到python如何保护django源码的安装目录里如何保护django源码,找site-packages或者是dist-packages如何保护django源码,看到django如何保护django源码的目录如何保护django源码,把它删除就可以了。