Hide raw/endraw tags for a regular markdown

This commit is contained in:
Denis Koltsov
2016-11-19 17:26:46 +01:00
parent 1e5131b5c7
commit 61b5bc35e7
21 changed files with 42 additions and 43 deletions

View File

@@ -1,4 +1,3 @@
{% raw %}
# 4.3 クロスサイトスクリプティングの予防
現在のホームページは大量の動的なコンテンツを含みユーザのエクスペリエンスを高めています。以前に比べてとても複雑になっています。いわゆる動的なコンテンツとはユーザの環境と要求に応じてWebアプリケーションが目的の内容を出力できることを指します。動的なホームページは"クロスサイトスクリプティング"(Cross Site Scripting、セキュリティ専門家が一般的にXSSと省略するもの)と呼ばれる攻撃を受けることがあります。
@@ -27,7 +26,7 @@ Goではどのようにこの効果的な防御を行なっているのでしょ
図4.3 Javascriptフィルターによる出力
Goのhtml/templateパッケージはデフォルトでhtmlタグをフィルターします。しかし時にはこの`<script>alert()</script>`を正常な情報として出力したい場合があるかもしれません。そのような場合はどのように処理するべきでしょうかこの場合はtext/templateをご利用ください。下の例をご覧ください
<!-- {% raw %} -->
import "text/template"
...
t, err := template.New("foo").Parse(`{{define "T"}}Hello, {{.}}!{{end}}`)
@@ -67,4 +66,4 @@ Goのhtml/templateパッケージはデフォルトでhtmlタグをフィルタ
* [目次](<preface.md>)
* 前へ: [入力値の検証](<04.2.md>)
* 次へ: [フォームの複数回送信の防止](<04.4.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 4.5 ファイルのアップロード処理
ユーザによるファイルのアップロードを処理したいとします。例えば、現在Instagramのようなホームページを作成しているとします。ユーザが撮影した写真を保存する必要があります。このような要求はどのように実現するのでしょうか
@@ -156,4 +156,4 @@
* [目次](<preface.md>)
* 前へ: [フォームの多重送信の防止](<04.4.md>)
* 次へ: [まとめ](<04.6.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 6.4 sessionハイジャックの予防
sessionハイジャックは広範囲に存在する比較的重大な脆弱性です。session技術において、クライアントサイドとサーバサイドはsessionのIDによってセッションを維持します。しかしこのIDは簡単にスニッフィングされ、第三者に利用されてしまいます。これは中間者攻撃の一種です。
@@ -88,4 +88,4 @@ sessionが始まると、生成されたsessionIDの時間を記録する一つ
* [目次](<preface.md>)
* 前へ: [sessionストレージ](<06.3.md>)
* 次へ: [まとめ](<06.5.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 7.1 XMLの処理
XMLはデータと情報のやりとりするための形式として十分普及しています。Webサービスが日々広範囲で応用されてくるにつれ、現在XMLは日常的な開発作業において重要な役割を演じてきました。この節ではGo言語の標準パッケージにあるXML関連のパッケージをご紹介します。
@@ -220,4 +220,4 @@ XMLをstructに解析する際は以下のルールに従います 
* [目次](<preface.md>)
* 前へ: [テキスト処理](<07.0.md>)
* 次へ: [Jsonの処理](<07.2.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 7.4 テンプレートの処理
## テンプレートとは何か
おそらくあなたはMVCのデザインパターンについて聞いたことがあると思います。Modelはデータを処理を、Viewは表示結果を、Controllerはユーザのリクエストの制御を行います。Viewレイヤーの処理では、多くの動的な言語ではどれも静的なHTMLの中に動的言語が生成したデータを挿入します。例えばJSPでは`<%=....=%>`を挿入することで、PHPでは`<?php.....?>`を挿入することで実現します。
@@ -349,4 +349,4 @@ Webアプリケーションを作る時はテンプレートの一部が固定
* [目次](<preface.md>)
* 前へ: [正規表現の処理](<07.3.md>)
* 次へ: [ファイルの操作](<07.5.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 9.1 CSRF攻撃の予防
## CSRFとは何か 
@@ -92,4 +92,4 @@ tokenを検証
* [目次](<preface.md>)
* 前へ: [セキュリティと暗号化](<09.0.md>)
* 次へ: [入力フィルタリングの確保](<09.2.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 10.2 ローカライズリソース
前の節ではどのようにしてLocaleを設定するかご紹介しました。Localeを設定したあとはどのようにしてLocaleに対応する情報を保存するかという問題を解決する必要があります。ここでの情報とは以下の内容を含みますテキスト情報、時間と日時、通貨の値、画像、ファイルや動画といったリソース等です。ここではこれらの情報に対してご紹介していきたいと思います。Go言語ではこれらのフォーマットの情報をJSONに保存します。その後それぞれ適した方法によって表示します。(以下では日本語と英語のつの言語を対比して例を挙げます。保存の形式はそれぞれen.jsonとja-JP.jsonです。)
## ローカライズテキスト情報
@@ -133,4 +133,4 @@ Localeの違いによってビューを表示させる場合もあるかもし
* [目次](<preface.md>)
* 前へ: [デフォルトロケールの設定](<10.1.md>)
* 次へ: [国際化サイト](<10.3.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 10.3 国際化サイト
前の節でどのようにしてローカライズリソースを処理するかご紹介しました。Localeに対応した設定ファイルです。ではもし複数のローカライズリソースを処理する場合はいくつかの我々が通常使用する例は簡単なテキスト翻訳、時間や日時、数字といったものはどのように処理するのでしょうかこの節では一つ一つこれらの問題を解決していきます。
## 複数のロケールパッケージの管理
@@ -179,4 +179,4 @@
* [目次](<preface.md>)
* 前へ: [ローカライズリソース](<10.2.md>)
* 次へ: [まとめ](<10.4.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 12.2 サイトエラー処理
我々のWebアプリケーションが一旦実運用されると、さまざまなエラーが発生する可能性があります。Webアプリケーションの日常の実行ではいくつものエラーが発生する可能性があります。具体的には以下のとおり
@@ -123,4 +123,4 @@
* [目次](<preface.md>)
* 前へ: [アプリケーションログ](<12.1.md>)
* 次へ: [アプリケーションのデプロイ](<12.3.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 13.3 controller設計
伝統的なMVCフレームワークにおいて、多くの場合Action設計のサフィックス反映にもとづいています、しかしながら、現在webではREST風のフレームワークが流行しています。なるべくFilterかrewriteを使用してURLのリライトを行い、REST風のURLを実現しています。しかしなぜ直接新しくREST風のMVCフレームワークを設計しないのでしょうか本章ではこういった考え方に基いてどのようにREST風のMVCフレームワークにフルスクラッチでcontroller、最大限に簡素化されたWebアプリケーションの開発、ひいては一行で可能な"Hello, world"の実装についてご説明します。
@@ -162,4 +162,4 @@ index.tplのコードは以下のようになります。データの設定と
* [目次](<preface.md>)
* 前へ: [カスタム定義のルータの設計](<13.2.md>)
* 次へ: [ログとコンフィグ設計](<13.4.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 13.5 ブログの追加/削除/修正の実装
前ではbeegoフレームワークの全体的な構造思想の実装とニセコードの一部の実装についてご紹介しました。この節ではbeegoを通してブログシステムを設計しましょう。これにはブログの閲覧、追加、修正、削除といった操作が含まれます。
@@ -257,4 +257,4 @@ edit.tpl
* [目次](<preface.md>)
* 前へ: [ログとコンフィグ設計](<13.4.md>)
* 次へ: [まとめ](<13.6.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 14.3 フォームおよび検証のサポート
Web開発ではこのようなプロセスをよく見かけます
@@ -280,4 +280,4 @@ structを定義したらcontrollerにおいてこのように操作します
* [目次](<preface.md>)
* 前へ: [Sessionのサポート](<14.2.md>)
* 次へ: [ユーザの認証](<14.4.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 14.5 多言語サポート
第10章において国際化とローカライゼーションおよびgo-i18nライブラリの開発についてご紹介しました。この節ではこのライブラリをbeegoフレームワークの中にもってくることで、我々のフレームワークにおいて国際化とローカライゼーションをサポートさせます。
@@ -112,4 +112,4 @@ beegoにおいて以下のようにグローバル変数を設定します
* [目次](<preface.md>)
* 前へ: [ユーザ認証](<14.4.md>)
* 次へ: [pprofのサポート](<14.6.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,7 +1,7 @@
{% raw %}
# 9.1 预防CSRF攻击
## 什么是CSRF
CSRFCross-site request forgery中文名称跨站请求伪造也被称为one click attack/session riding缩写为CSRF/XSRF。
那么CSRF到底能够干嘛呢你可以这样简单的理解攻击者可以盗用你的登陆信息以你的身份模拟发送各种请求。攻击者只要借助少许的社会工程学的诡计例如通过QQ等聊天软件发送的链接(有些还伪装成短域名,用户无法分辨)攻击者就能迫使Web应用的用户去执行攻击者预设的操作。例如当用户登录网络银行去查看其存款余额在他没有退出时就点击了一个QQ好友发来的链接那么该用户银行帐户中的资金就有可能被转移到攻击者指定的帐户中。
@@ -9,6 +9,7 @@ CSRFCross-site request forgery中文名称跨站请求伪造
所以遇到CSRF攻击时将对终端用户的数据和操作指令构成严重的威胁当受攻击的终端用户具有管理员帐户的时候CSRF攻击将危及整个Web应用程序。
## CSRF的原理
下图简单阐述了CSRF攻击的思想
![](images/9.1.csrf.png?raw=true)
@@ -92,4 +93,3 @@ CSRF的防御可以从服务端和客户端两方面着手防御效果是从
* [目录](<preface.md>)
* 上一节: [安全与加密](<09.0.md>)
* 下一节: [确保输入过滤](<09.2.md>)
{% endraw %}

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 10.2 本地化资源
前面小节我们介绍了如何设置Locale设置好Locale之后我们需要解决的问题就是如何存储相应的Locale对应的信息呢这里面的信息包括文本信息、时间和日期、货币值、图片、包含文件以及视图等资源。那么接下来我们将对这些信息一一进行介绍Go语言中我们把这些格式信息存储在JSON中然后通过合适的方式展现出来。(接下来以中文和英文两种语言对比举例,存储格式文件en.json和zh-CN.json)
## 本地化文本消息
@@ -133,4 +133,4 @@ $GOROOT/lib/time包中的timeinfo.zip含有locale对应的时区的定义
* [目录](<preface.md>)
* 上一节: [设置默认地区](<10.1.md>)
* 下一节: [国际化站点](<10.3.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 10.3 国际化站点
前面小节介绍了如何处理本地化资源即Locale一个相应的配置文件那么如果处理多个的本地化资源呢而对于一些我们经常用到的例如简单的文本翻译、时间日期、数字等如果处理呢本小节将一一解决这些问题。
## 管理多个本地包
@@ -179,4 +179,4 @@
* [目录](<preface.md>)
* 上一节: [本地化资源](<10.2.md>)
* 下一节: [小结](<10.4.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 12.2 网站错误处理
我们的Web应用一旦上线之后那么各种错误出现的概率都有Web应用日常运行中可能出现多种错误具体如下所示
@@ -123,4 +123,4 @@
* [目录](<preface.md>)
* 上一章: [应用日志](<12.1.md>)
* 下一节: [应用部署](<12.3.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 13.3 controller设计
传统的MVC框架大多数是基于Action设计的后缀式映射然而现在Web流行REST风格的架构。尽管使用Filter或者rewrite能够通过URL重写实现REST风格的URL但是为什么不直接设计一个全新的REST风格的 MVC框架呢本小节就是基于这种思路来讲述如何从头设计一个基于REST风格的MVC框架中的controller最大限度地简化Web应用的开发甚至编写一行代码就可以实现“Hello, world”。
@@ -162,4 +162,4 @@ index.tpl的代码如下所示我们可以看到数据的设置和显示都
* [目录](<preface.md>)
* 上一章: [自定义路由器设计](<13.2.md>)
* 下一节: [日志和配置设计](<13.4.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 13.5 实现博客的增删改
前面介绍了beego框架实现的整体构思以及部分实现的伪代码这小节介绍通过beego建立一个博客系统包括博客浏览、添加、修改、删除等操作。
@@ -258,4 +258,4 @@ edit.tpl
* [目录](<preface.md>)
* 上一章: [日志和配置设计](<13.4.md>)
* 下一节: [小结](<13.6.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 14.3 表单及验证支持
在Web开发中对于这样的一个流程可能很眼熟
@@ -280,4 +280,4 @@
* [目录](<preface.md>)
* 上一节: [Session支持](<14.2.md>)
* 下一节: [用户认证](<14.4.md>)
{% endraw %}
<!-- {% endraw %} -->

View File

@@ -1,4 +1,4 @@
{% raw %}
<!-- {% raw %} -->
# 14.5 多语言支持
我们在第十章介绍过国际化和本地化开发了一个go-i18n库这小节我们将把该库集成到beego框架里面来使得我们的框架支持国际化和本地化。
@@ -112,4 +112,4 @@ beego中设置全局变量如下
* [目录](<preface.md>)
* 上一节: [用户认证](<14.4.md>)
* 下一节: [pprof支持](<14.6.md>)
{% endraw %}
<!-- {% endraw %} -->