Changelog

全名 页面 提交时间 (Ascending) Unsort 内容 注释 ...
ySJ 2.0/chapter19/#581 2010-04-27 15:05:32 <literal>;C:\Program Files\gettext-utils\bin</literal>加到<literal>变量值</literal>字段的末尾。
ySJ 2.0/chapter19/#589 2010-04-27 15:07:40 <reference name="final chapter" refuri="../chapter20/">未章</reference> 将关注于安全,如何帮助你的用户和网站远离恶意软件的攻击。
ySJ 2.0/chapter20/#9 2010-04-27 15:14:54 作为Web开发人员,我们有责任来对抗这些黑暗的力量。
ySJ 2.0/chapter20/#10 2010-04-27 15:15:05 每一个Web开发者都应该把安全看成是web编程中的基础部分。
ySJ 2.0/chapter20/#31 2010-04-27 15:18:07 这包括用户数据(比如Web表单提交的内容)和带外数据(比如,HTTP头、cookies以及其他信息)。
ySJ 2.0/chapter20/#86 2010-04-27 15:26:02 传给 <literal>extra()</literal> 方法的 <literal>where</literal> 参数。
ySJ 2.0/chapter20/#87 2010-04-27 15:27:32 (参考 附录 C。) 这个参数故意设计成可以接受原始的SQL。
ySJ 2.0/chapter20/#93 2010-04-27 15:29:08 在每一个示例中,为了避免字符串被篡改而使用 <emphasis>绑定参数</emphasis> 来代替。这样,本节开始的例子应该写成这样:
ySJ 2.0/chapter20/#10 2010-04-28 08:44:25 每一个Web开发者都应该把安全看成是Web编程中的基础部分。
ySJ 2.0/chapter20/#162 2010-04-28 09:10:21 <emphasis>中间人</emphasis> 攻击:检索所在有线(无线)网络,监听会话数据。
ySJ 2.0/chapter20/#166 2010-04-28 09:15:04 这两种攻击的一个例子可以是在一间咖啡店里的某个攻击者利用店内的无线网络来捕获某个会话cookie,然后她就可以利用那个cookie来假冒原始用户。
ySJ 2.0/chapter20/#179 2010-04-28 09:20:45 例如,PHP允许在URL(如 <literal>http://example.com/?PHPSESSID=fa90197ca25f6ab40bb1374c510d7a32</literal> 等)中传递会话标识符。攻击者欺骗用户点击一个硬编码会话ID的链接,这回导致用户转到那个会话。
ySJ 2.0/chapter20/#181 2010-04-28 09:21:22 会话滞留已经运用在钓鱼攻击中,以诱骗用户在攻击者拥有的账号里输入其个人信息。
ySJ 2.0/chapter20/#187 2010-04-28 09:26:45 攻击者可以诱骗用户点击一个链接来提交背景颜色,实际上包含了一个XSS攻击。
ySJ 2.0/chapter20/#188 2010-04-28 09:27:31 如果颜色没有转义,那么就可以再把恶意代码注入到用户环境中。
ySJ 2.0/chapter20/#198 2010-04-28 09:28:32 不要直接在cookie中保存数据。
ySJ 2.0/chapter20/#199 2010-04-28 09:29:25 相反,存储一个在后台映射到session数据存储的session ID。
ySJ 2.0/chapter20/#220 2010-04-28 10:09:44 <emphasis>邮件头部注入</emphasis> :SQL注入的兄弟,是一种通过劫持发送邮件的Web表单的攻击方式。
ySJ 2.0/chapter20/#241 2010-04-28 10:17:51 Django内建邮件功能(在 <literal>django.core.mail</literal> 中)根本不允许在用来构建邮件头部的字段中存在换行符(表单,收件地址,还有主题)。
ySJ 2.0/chapter20/#254 2010-04-28 10:22:44 尽管一眼看上去,视图通过 <literal>BASE_PATH</literal> (通过使用 <literal>os.path.join</literal> )限制了对于文件的访问,但如果攻击者使用了包含 <literal>..</literal> (两个句号,父目录的一种简写形式)的文件名,她就能够访问到 <literal>BASE_PATH</literal> 目录结构以上的文件。对她来说,发现究竟使用几个点号只是时间问题,比如这样:<literal>../../../../../etc/passwd</literal>
ySJ 2.0/chapter20/#270 2010-04-28 10:30:42 不用多说,你 <emphasis>永远</emphasis> 不要在编写可以读取任何位置上的文件的代码!
ySJ 2.0/chapter20/#272 2010-04-28 10:31:28 Django内置的静态内容视图是做转义的一个好的示例(在 <literal>django.views.static</literal> 中)。这是相关代码:
ySJ 2.0/chapter20/#297 2010-04-28 10:36:22 正如我们在第12章所提到的,Django的<literal> DEBUG</literal> 设置控制这些错误信息的显示。
ySJ 2.0/chapter20/#307 2010-04-28 10:37:15 永远记住,Web安全是一个不断发展的领域。如果你正在阅读这本书的停止维护的那些版本,请阅读最新版本的这个部分来检查最新发现的漏洞。
ySJ 2.0/chapter20/#308 2010-04-28 10:37:52 事实上,每周或者每月花点时间挖掘Web应用安全,并且跟上最新的动态是一个很好的主意。
ySJ 2.0/chapter20/#309 2010-04-28 10:39:10 花费很少,但是对你网站和用户的保护确是无价的。
ySJ 2.0/chapter20/#316 2010-04-28 10:40:11 在运行你的Django网站时,无论是为你或几个朋友的小网站,或者是下一个google,我们祝你好运。
Chen Ming 2.0/chapter02/#330 2010-04-28 23:17:49 接下来做什么?
Chen Ming 2.0/chapter02/#208 2010-04-28 23:21:05 如果你用的是Python2.4或更早的版本,你需要 SQLite 3<emphasis>而不是</emphasis>版本2,这个可从<reference name="http://www.djangoproject.com/r/sqlite/" refuri="http://www.djangoproject.com/r/sqlite/">http://www.djangoproject.com/r/sqlite/</reference><literal>pysqlite</literal><reference name="http://www.djangoproject.com/r/python-sqlite/" refuri="http://www.djangoproject.com/r/python-sqlite/">http://www.djangoproject.com/r/python-sqlite/</reference>
Chen Ming 2.0/chapter02/#208 2010-04-28 23:28:15 如果你用的是Python2.4或更早的版本,你需要 SQLite 3<emphasis>而不是</emphasis>版本2,这个可从<reference name="http://www.djangoproject.com/r/sqlite/" refuri="http://www.djangoproject.com/r/sqlite/">http://www.djangoproject.com/r/sqlite/</reference><literal>pysqlite</literal><reference name="http://www.djangoproject.com/r/python-sqlite/" refuri="http://www.djangoproject.com/r/python-sqlite/">http://www.djangoproject.com/r/python-sqlite/</reference>
Chen Ming 2.0/chapter02/#289 2010-04-28 23:29:18 尽管这些的文件很小,但这些文件已经构成了一个可运行的Django应用。
2.0/chapter08/#3 2010-04-29 12:55:51 <reference name="Chapter 3" refuri="../chapter03/">第三章</reference> ,我们已经对基本的Django视图和URL配置做了介绍。
Chen Ming 2.0/chapter08/#3 2010-04-29 12:56:48 <reference name="Chapter 3" refuri="../chapter03/">第三章</reference> ,我们已经对基本的Django视图功能和URL配置做了介绍。 插入标记
Chen Ming 2.0/chapter08/#35 2010-04-29 13:00:34 在我们的URLconf例子中,每个视图字符串的开始部分都是<literal>mysite.views</literal>,造成重复输入。
Chen Ming 2.0/chapter08/#36 2010-04-29 13:01:51 我们可以把公共的前缀提取出来,作为第一个参数传给<literal>patterns()</literal>函数,像这样:
Chen Ming 2.0/chapter08/#230 2010-04-29 13:16:01 <literal>model.objects.all()</literal>一行是<emphasis>鸭子类型(duck typing)</emphasis> :如果它走路像鸭子,叫声也像鸭子,那么我们就把它当做鸭子。 插入标记
Chen Ming 2.0/chapter08/#280 2010-04-29 13:22:10 <literal>'1'</literal> ,不是整数<literal>1</literal>。这是为了保持一致,因为获取的<literal>num</literal>的值总是字符串。
Chen Ming 2.0/chapter08/#474 2010-04-29 13:25:20 接下来做什么?
Chen Ming 2.0/chapter08/#480 2010-04-29 13:26:21 Hosting graciously provided by
Chen Ming 2.0/chapter09/#693 2010-04-29 13:29:48 接下来做什么?
Chen Ming 2.0/chapter09/#5 2010-04-29 13:32:19 本章深入探讨Django的模板系统。
Chen Ming 2.0/chapter09/#179 2010-04-29 13:39:32 类似的,如果用户名包含了<literal>'<'</literal>符号,就像这样:
Chen Ming 2.0/chapter09/#179 2010-04-29 13:39:45 类似的,如果用户名包含了<literal>'<'</literal>符号,就像这样:
Chen Ming 2.0/chapter09/#179 2010-04-29 13:40:22 类似的,如果用户名包含了<literal>'<'</literal>符号,就像这样:
Chen Ming 2.0/chapter09/#179 2010-04-29 13:41:03 类似的,如果用户名包含了<literal><</literal><符号,就像这样:
Chen Ming 2.0/chapter09/#179 2010-04-29 13:42:32 类似的,如果用户名包含了<literal><</literal>符号,就像这样:
Chen Ming 2.0/chapter09/#179 2010-04-29 13:43:31 类似的,如果用户名包含<literal>小于</literal>(<)符号,就像这样:
Chen Ming 2.0/chapter09/#179 2010-04-29 13:44:00 类似的,如果用户名包含<literal>小于</literal>符号,就像这样:
Chen Ming 2.0/chapter09/#179 2010-04-29 13:44:53 类似的,如果用户名包含<literal>小于('<')</literal>符号,就像这样:
Chen Ming 2.0/chapter09/#179 2010-04-29 13:45:10 类似的,如果用户名包含<literal>小于</literal>符号,就像这样:
« < 91 92 93 94 95 96 > 96 pages