luffy
|
2.0/chapter09/#194 |
2009-12-31 15:00:20
|
一是你可以确保每一个不被信任的变量通过过滤器,它把潜在有害的html字符转换为无害的。<literal>escape</literal> |
|
luffy
|
2.0/chapter09/#192 |
2009-12-31 14:37:30
|
为了避免这个问题,你有两个选择:
|
|
luffy
|
2.0/chapter09/#190 |
2009-12-31 14:30:35
|
关于安全的更多内容,请看20章
|
|
luffy
|
2.0/chapter09/#189 |
2009-12-31 14:28:43
|
利用这类漏洞被Cross Site Scripting (XSS) 攻击。
|
|
luffy
|
2.0/chapter09/#188 |
2009-12-31 14:26:14
|
显然,用户提交的数据不应该被盲目信任,直接插入到你的页面中。因为一个潜在的恶意的用户能够利用这类漏洞做坏事。
|
|
luffy
|
2.0/chapter09/#181 |
2009-12-31 14:23:20
|
像这样username
|
|
luffy
|
2.0/chapter09/#186 |
2009-12-31 14:22:45
|
页面的剩余部分变成了粗体!
|
|
luffy
|
2.0/chapter09/#183 |
2009-12-31 14:19:57
|
那样的话模板结果被翻译成这样:
|
|
luffy
|
2.0/chapter09/#181 |
2009-12-31 14:17:40
|
象这样 username
|
|
luffy
|
2.0/chapter09/#177 |
2009-12-31 11:23:27
|
这意味着浏览器将弹出JavaScript警告框!
|
|
luffy
|
2.0/chapter09/#174 |
2009-12-31 10:49:13
|
用这个用户名,模板将被翻译成:
|
|
luffy
|
2.0/chapter09/#171 |
2009-12-31 10:42:54
|
首先,这看起来是显示用户名的一个无害的途径,但是考虑如果用户输入如下的名字将会发生什么:
|
|
luffy
|
2.0/chapter09/#168 |
2009-12-31 10:32:16
|
例如,考虑这个模板片段:
|
|
luffy
|
2.0/chapter09/#167 |
2009-12-31 10:31:46
|
从模板生成html的时候,总是有一个风险——变量包了含会影响结果html的字符。
|
|
|
2.0/chapter09/#165 |
2009-12-31 10:29:11
|
html自动转意
|
|
|
2.0/chapter10/#95 |
2009-12-31 00:43:45
|
比如让我们看看如何添加一个num_pages域到第五章中Book模型。首先,我们会把开发环境中的模型改成如下形式:
|
|
|
2.0/chapter16/#0 |
2009-12-30 15:06:13
|
第十六章:集成的子框架
|
|
luffy
|
2.0/chapter08/#403 |
2009-12-29 22:14:09
|
我们能够通过使用一个视图包装达到目的。
|
|
luffy
|
2.0/chapter08/#402 |
2009-12-29 22:11:24
|
如果我们能够丛每个视图里移除那些 重复代,并且只在需要认证的时候指明它们,那就完美了。
|
|
luffy
|
2.0/chapter08/#399 |
2009-12-29 22:02:07
|
这里,每一个视图开始都检查<literal>request.user</literal>是否是已经认证的,是的话,当前用户已经成功登陆站点否则就重定向<literal>/accounts/login/</literal> |
|
luffy
|
2.0/chapter08/#396 |
2009-12-29 21:53:37
|
假设你发现自己在各个不同视图里重复了大量代码,就像 这个例子:
|
|
luffy
|
2.0/chapter08/#396 |
2009-12-29 21:52:54
|
假设你发现自己在各个不同视图里重复了大量代码,就像 下面这个例子:
|
|
luffy
|
2.0/chapter08/#395 |
2009-12-29 21:47:46
|
我们最终的视图技巧利用了一个高级python技术。
|
|
luffy
|
2.0/chapter08/#393 |
2009-12-29 21:44:02
|
包装视图函数
|
|
luffy
|
2.0/chapter08/#390 |
2009-12-29 21:37:52
|
但是在我们这样做之前,我们要调用两次获得参数<literal>kwargs.pop()</literal><literal>GET</literal><literal>POST</literal>
,如果它们合法的话。
|
|
fifi
|
2.0/chapter16/#0 |
2009-12-29 18:47:28
|
第十四章:集成的子框架
|
|
fifi
|
2.0/chapter10/#0 |
2009-12-29 18:47:21
|
第10章:
|
|
fifi
|
2.0/chapter08/#0 |
2009-12-29 18:47:18
|
第八章:高级视图和URL配置
|
|
fifi
|
2.0/chapter02/#0 |
2009-12-29 18:46:48
|
第二章:入门
|
|
fifi
|
2.0/chapter03/#0 |
2009-12-29 18:46:25
|
第三章:视图和URL配置
|
|
Yozone Wong
|
2.0/chapter07/#294 |
2009-12-29 00:53:33
|
(在后面的例子中,request.method将会设置为'GET',因为在普通的网页浏览中,浏览器都使用GET,而非POST)。判断request.method的值很好地帮助我们将表单显示与表单处理隔离开来。
|
“浏览器都使用GET” 而不是 “浏览器都使用GE”, 少了个T
|
|
2.0/chapter07/#20 |
2009-12-28 22:06:47
|
|