読者です 読者をやめる 読者になる 読者になる

hiddenの値に対するXSS対策が行えていなかった

security

[問題]
リクエストを送信する際、hiddenで宣言している値をfiddlerJavaScriptのコードに書き換えた。
また、他の必須入力項目を空にして業務エラーを発生させた。
その後、エラー画面に戻ってきた際にポップアップが上がってしまった。

[原因]
hiddenの値を出力する際に値のサニタイジングが行えていなかった為。

[対応]
案1 出力する値をサニタイジングする。
案2 hiddenの値を送信する際、前回の値と同じかどうか突合せをする。

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

日時がずれていてログインができない

base

[事象]
ログインを行おうとすると、認証期間が有効期限切れですというエラーメッセージが表示されてログインできない。

[原因]
認証期間をクッキーに持たせる仕様となっていた。
クッキーに設定していた日付は、業務がアプリケーションで用いている業務用の日付(正確には日時)を用いていた。
一方、認証側ではシステム日時を用いていた為、多少ずれがあったため有効期限切れとみなされた。

[対応]
そもそも、システム的な箇所に、業務用の日付を使うべきではない。
もし使わないといけないのであれば、システム日付部分も業務用の日付にするなど整合性を一致させないといけない。
(どこかで破綻する可能性は非常に高いが・・・)

[補足]
業務用の日付を用いる場合に気をつけること。
・利用しているのが、システム日付なのか業務用の日付なのかを把握しておく必要がある。
 またどこで業務用の日付が使われているのかを確認しておく。
・業務用の日付にはN+1、休日は繰り越して計算している日付なども含まれる場合は考えられるので、その違いもきちんと確認しておくこと。
 問題ないのであれば名称にその様な分かりやすい名前を付与しておいた方が良い。

日時を扱う場合に気をつけること。
・テストで簡単に変えれる様にしておいた方がよい。
 (業務用の日付を使う・使わないに限らず)
・日付跨った場合の取り扱いを確認しておく。
 (25,26時なのか、翌日として扱うのか)
トランザクション開始日時、コミット日時などシステム的に重要な日時をどう取得するか(揃えるか、リアルタイムにするか)を決めておく。
・祝日が変わる場合があるので、官報(暦要項)は意識しておくこと。2月最初の平日に発表される。

システム設計のセオリー --ユーザー要求を正しく実装へつなぐ

システム設計のセオリー --ユーザー要求を正しく実装へつなぐ

システム設計の謎を解く 強いSEになるための、機能設計/入出力設計の極意

システム設計の謎を解く 強いSEになるための、機能設計/入出力設計の極意

set -Ceu

Linux-シェル

[-C]
リダイレクト先のファイルが既に存在している場合はエラーにしてくれる。
本当に書き込みたい場合は、>|で書くと上書きできる。

[-e]
失敗した場合、スクリプトを終了してくれる。
コマンドが失敗してもシェルスクリプトを終了させたくないときは、コマンドに && true を付けるとシェルスクリプトは終了しない。

[-u]
変数が存在しない場合、エラーになってスクリプトを終了してくれる。

[参考URL]
qiita.com

シェルプログラミング実用テクニック

シェルプログラミング実用テクニック

監査計画/監査手続書/監査証跡/監査証拠/監査調書/監査報告書

情報処理試験-AU

[監査計画(P106)]
監査計画は決まった期間ごとに作成される期間計画と、個々の監査ごとに作成される個別計画がある。
期間計画には、複数年度に跨る中長期計画と、年度単位の計画である年度計画がある。


[監査手続書(P156)]
監査手続書とは、監査手続の内容(調査の手順、手続きの具体的な内容、方法等)を纏めた文章のこと。


[監査証跡(P83)]
情報システムへのアクセス状況や操作内容など、監査人が追跡できるように、時系列に記録したもののこと。

(主な監査証跡の例)
・信頼性のコントロール:テスト結果報告書、ハードウェアの障害ログ
・安全性のコントロールアクセスログ、オペレーションログ
・効率性のコントロール:ユーザニーズ調査報告書、費用対効果分析書


[監査証拠(P150)]
監査意見を立証する事実である。監査報告書に記載する監査意見や指摘事項は、その資料によって裏付けられてなければならない。

(監査証拠の種類)
・物理的証拠:システム監査人自らが検証した現物
・文章的証拠:システム監査人が内容を検証した文章、電磁的記録物
・口頭的証拠:システム監査人が証拠になると判断した証言、説明
・状況的証拠:システム監査人自らが観察した状況


[監査調書(P163)]
実施した監査手続の結果とその関連資料をまとめたものであり、監査結果記録であると同時に監査意見の裏付け証拠となる。


[監査報告書(P246)]
システム監査の結果を伝えるための文章である。

(監査報告書の種類)
・システム監査報告書(個別監査報告書)
・年次監査報告書

(監査報告書の役割)
・監査意見の伝達手段
・監査内容の記録、保存手段
・システム監査人の責任限定手段


[参考文献]

情報処理教科書 システム監査技術者 2017~2018年版

情報処理教科書 システム監査技術者 2017~2018年版

情報処理試験資格は新旧併せて8つ保持しておりますが、
論文系は翔泳社が一番解説が詳しく、サンプル論文も充実しており、お勧めです。

MySQLワークベンチでNullをインポートする方法

MySQL

[背景]
MySQLワークベンチでcsvエクスポートを行うと、NullのカラムはNULLという文字でエクスポートされる。
これを同じくMySQLワークベンチでインポートを行うと、NULLという文字が格納されてしまう。
これを、csvファイルを編集して、\Nと文字列置換しても、\Nという文字が格納されてしまう。

[対応方法]
csvファイルをあまり編集する必要ないのであれば、
csv形式でエクスポートするのではなく、SQL形式でエクスポートすれば良い。
これにより、わざわざデータベースのダンプを取得しなくても、テーブル単位でエクスポートできるし、
エクスポート結果をSQLエディタに張り付けてインポートができる。
当然、NullのカラムはNullの状態で復元できる。

[問題点]
・編集する際は、csv形式より当然手間
・importする際には、元の対象レコードを削除しておく必要有
 (これはMySQLワークベンチ経由でcsvインポートする際も同じであるが)

[発展形]
GUI形式でエクスポートした結果をNullでインポートできる様なバッチファイルを作成しておく。
具体的には、対象ファイルをsedなどでNULL文字を\nに置換し、
mysqlimportコマンドでインポートする際に--replaceオプションコマンドを付与して実行する様にする。

詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド (NEXT ONE)

詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド (NEXT ONE)

HeapDumpが出力されない

java

[事象]
HeapDumpBeforeFullGCやHeapDumpAfterFullGCを設定したにも関わらず、ヒープダンプがどこにも出力されない。

[原因]
catalina.outのログを確認すると、Unable to create java_pidXXX.hprof.nnが権限エラーで出力できないというエラーが発生していた。パスを指定していなかった為、TomcatユーザーでデフォルトのJavaの配置場所(root権限)で書き込みしようとしており出力できなかった。

[対応]
ヒープダンプのパスを設定する。
 ex.) -XX:HeapDumpPath=/tmp

現場で使えるデバッグ & トラブルシュート Java編

現場で使えるデバッグ & トラブルシュート Java編

for文を加えると正規表現の挙動が異なる

Windows-DOS系コマンド

[事象]
findstrを用いて行の先頭の文字列に一致する内容を抽出していたが、for文を加えると挙動が変化して、正規表現の^が評価されなくなった。

[原因]
当初の定義と遅延変数展開では差が出てしまうためなのか、なぜか先頭を表す^が消えてしまう。

[対応]
リテラル定義していた^を^^で定義する。
(DOSプロンプトでは^がエスケープ文字)

[改訂新版]Windowsコマンドプロンプトポケットリファレンス

[改訂新版]Windowsコマンドプロンプトポケットリファレンス