30代専業主婦の独学エンジニア挑戦ブログ

実務未経験の30歳の専業主婦が独学でエンジニアを目指すブログです

「SQLアンチパターン」(アプリケーション開発のアンチパターン)

勉強記録 

SQLアンチパターン」のⅣ部 アプリケーション開発のアンチパターンを読んだので、学んだことをまとめました。 

 

SQLアンチパターン

SQLアンチパターン

  • 作者:Bill Karwin
  • 発売日: 2013/01/26
  • メディア: 大型本
 

 

<19章>リーダブルパスワード(読み取り可能パスワード)

パスワードを平文で格納してしまうこと。
 
(解決方法)
ハッシュ化して格納する
※ハッシュ化は復元できない特定の文字列からできているSQLアンチパターンの範囲外なので、別の機会に勉強する)
ちなみに、これを応用したのがブロックチェーン
 

<20章> SQLインジェクション

SQLインジェクションと呼ばれるDBを改ざんしたり不正に情報を入手する攻撃がある。未検証の入力をコードとして実行していると、SQLインジェクションが生じてしまう。
 
(解決方法)
入力値をフィルタリング
チームメンバーにコードレビューしてもらうなど
 

<21章> シュードキー・ニートフリーク(類似キー潔癖症

欠番となった類似キーを再利用する。または、欠番を埋めてすべての値が連続するように、既存行のキーの値を更新して隙間を埋めること。
データ不一致の元になるのでよくない!
 
(解決方法)
類似キーの欠番は埋めない
 

<22章> シー・ノー・エビル(臭いものに蓋)

肝心な部分を見逃す。APIの戻り値を確認しなかったり、例外処理をしない部分があるなど。
 
(解決方法)
戻り値と例外のチェックをする。
デバッグ用に実行したSQLをログに出力する
 

<23章> ディプロマティック・イミュニティ(外交特権)

SQLを特別扱いする。アプリケーション開発のルールはデータベース開発に当てはまらないと考えること。
 
(解決方法)
DB関連の情報をER図にして文書化する
SQL文もソースレビューの対象とする
DB関連のテストコードも必ず書くなど
 

<24章> マジックビーンズ(魔法の豆)

広い意味でのモデルと、狭い意味でのモデルは意味が違う
狭い意味でのモデル=エンティティ=アクティブレコード ←これはMVCのモデルとは違う!
 
(解決方法)
アーキテクチャパターンを学び、ちゃんと理解しよう!
 

<25章> 砂の城

想定不足
 
(解決方法)
どのようなトラブルが起こりうるのか可能な限り想定する!