[ja] Remove original text from translated documents.
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
|
||||
Web開発の原則はユーザが入力したいかなる情報も信用してはならないということです。そのため、ユーザの入力した情報を検証しフィルターすることは非常に重要になってきます。ブログやニュースの中でどこそこのホームページがハッキングされたりセキュリティホールが存在するといったことをよく聞くかもしれません。これらの大部分はユーザの入力した情報に対してホームページが厳格な検証を行わなかった事によるものです。そのため、安全なWebプログラムを書くために、フォームの入力を検証する意義は非常に大きいのです。
|
||||
|
||||
|
||||
Webアプリケーションを書く時は主に2つの方面のデータ検証があります。ひとつはページ上でのjsによる検証で(現在この方面では多くのプラグインがあります。例えばValidationJSプラグインなどがそうです)、もうひとつはサーバ側での検証です。この節ではどのようにサーバでの検証を行うか解説します。
|
||||
|
||||
## 必須フィールド
|
||||
@@ -17,6 +16,8 @@ Webアプリケーションを書く時は主に2つの方面のデータ検
|
||||
## 数
|
||||
たとえば、フォームからある人の年齢が50歳や10歳といった具体的な値を必要としていて、"おっさん"とか"若者"というようなものでなかったとします。このようにフォームの入力フィールドの中で数字のみを許容するようにさせたい場合、整数かどうかを判断するために、まずint型に変換を行ってから処理を行います。
|
||||
|
||||
正の整数を判断しようとする場合は、まずint型に変換してから処理を行います
|
||||
|
||||
getint,err:=strconv.Atoi(r.Form.Get("age"))
|
||||
if err!=nil{
|
||||
//数の変換でエラーが発生。つまり、数字ではありません。
|
||||
@@ -45,8 +46,7 @@ Webアプリケーションを書く時は主に2つの方面のデータ検
|
||||
}
|
||||
|
||||
## 英文
|
||||
あるユーザの英語名を知りたいときなど、フォームの要素から英語の値を取り出したい場合は、astaxieであってasta谢ではないはずです。
|
||||
(訳注:「谢」はピンインでxieと書く)
|
||||
あるユーザの英語名を知りたいときなど、フォームの要素から英語の値を取り出したい場合は、astaxieであってasta谢ではないはずです。(訳注:「谢」はピンインでxieと書く)
|
||||
|
||||
簡単な正規表現を使ってデータを検証することができます:
|
||||
|
||||
@@ -66,12 +66,11 @@ Webアプリケーションを書く時は主に2つの方面のデータ検
|
||||
|
||||
|
||||
## 携帯電話番号
|
||||
ユーザが入力した携帯電話番号が正しいか判断したい場合は以下の正規表現で検証できます:
|
||||
ユーザが入力した携帯電話番号が正しいか判断したい場合は以下の正規表現で検証できます(訳注:中国の携帯電話番号):
|
||||
|
||||
if m, _ := regexp.MatchString(`^(1[3|4|5|8][0-9]\d{4,8})$`, r.Form.Get("mobile")); !m {
|
||||
return false
|
||||
}
|
||||
(訳注:中国の携帯電話番号)
|
||||
|
||||
## プルダウンメニュー
|
||||
フォームの中の`<select>`要素が生成するプルダウンメニューにおいて、ハッカーは時々このプルダウンメニューに無い項目を偽造してあなたに送りつけるかもしれません。このような場合値がもともと設定されたものであることを判断するにはどうすればよいでしょうか?
|
||||
@@ -131,9 +130,9 @@ selectには以下の要素があるとします:
|
||||
|
||||
上の`Slice_diff`という関数には私のオープンソースのライブラリが含まれます(sliceとmapを操作するライブラリ)[https://github.com/astaxie/beeku](https://github.com/astaxie/beeku)
|
||||
|
||||
|
||||
## 日付と時間
|
||||
ユーザが入力した日時が有効か確認したいとします。例えば、ユーザがスケジュールで8月45日にパーティを開く予定を入力したり、未来の時間を誕生日にしてみたりといった場合です。
|
||||
ユーザが入力した日時が有効か確認したいとします。例えば
|
||||
、ユーザがスケジュールで8月45日にパーティを開く予定を入力したり、未来の時間を誕生日にしてみたりといった場合です。
|
||||
|
||||
Goではtimeの処理パッケージを提供しています。ユーザの入力した年月日を目的の時間に変換してから、判断を行います。
|
||||
|
||||
@@ -143,7 +142,7 @@ Goではtimeの処理パッケージを提供しています。ユーザの入
|
||||
timeを取得した後、多くの時間関数の操作を行うことができます。具体的な判断は自身の要件に合わせて調整してください。
|
||||
|
||||
## 身分証明書番号
|
||||
フォームに入力された身分証を検証する場合、正規表現を使っても簡単に検証できます。しかし身分証明書番号は15桁と18桁があるので2つとも検証しなければなりません。
|
||||
フォームに入力された身分証を検証する場合、正規表現を使っても簡単に検証できます。しかし身分証明書番号は15桁と18桁があるので2つとも検証しなければなりません。(訳注:中国では身分証明書とともに個人を特定する国民背番号があります。)
|
||||
|
||||
//15桁の身分証明書の検証。15桁はすべて数字です。
|
||||
if m, _ := regexp.MatchString(`^(\d{15})$`, r.Form.Get("usercard")); !m {
|
||||
@@ -154,7 +153,6 @@ timeを取得した後、多くの時間関数の操作を行うことができ
|
||||
if m, _ := regexp.MatchString(`^(\d{17})([0-9]|X)$`, r.Form.Get("usercard")); !m {
|
||||
return false
|
||||
}
|
||||
//(訳注:中国では身分証明書とともに個人を特定する国民背番号があります。)
|
||||
|
||||
以上よく使用されるサーバ側でのフォーム要素の検証をいくつかご紹介しました。このイントロダクションを通してGoによるデータ検証、特に正規表現での処理に対する理解が深まるよう願っています。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user