コーディング規約メモ

感想おまちしてます!

リンク 

セキュリティ観点 

入力チェック 

  • クライアント側での入力チェックを禁止する。(JavaScript)

文字列のサニタイジング(XSS対策) 

  • テキスト入力:「&」「<」「>」を禁止
  • タグ属性値:「&」「<」「>」を「&amp;」などに変換
  • HTMLに出力する時点で変換する
  • イベント・ハンドラ属性:「onchange」など入力禁止
  • コメント:「<!– –>」の入力禁止
  • URL属性:「;」「/」「?」「:」「@」「&」「=」「+」の入力禁止
  • データベースエスケープ文字チェック:「’」「;」「or」「|」などの入力禁止

SQL分のサニタイジング(SQLインジェクション対策)

  • 危険文字のエスケープ
    UserID = Request.Form("userid")
    UserID = Replace(UserID, "'", "''") ←「'」を「''」に変換

HTMLのダブルクォーテーション、イングルクォーテーション

  • 値は必ずダブルクォーテーションで囲む

外部スタイルシートへのリンク

  • スクリプトを不正実行されないようにする。
    <link rel="stylesheet" href="<%=CSS%>">

    if CSS = "xxx.css" Then Response.Write "<link rel="stylesheet" href="xxx.css">"

情報漏洩・改ざんの防止

  • 3回連続ログインが失敗したら、30分間はログインを許さない
  • セッションの利用:ID、パスワード、パラメタなどはセッション変数に格納。Hidden属性は不可
  • 改ざん防止:選択項目、チェック項目の内容を検査する。接続元の視覚検査を行う。
  • Postで受信:if Request.ServerVariables(“HTTP_METHOD”) <> “POST” Then エラー

環境設定 

  • Webサーバの親パスを無効に設定する。Server.MapPath(“.”)を利用して物理パスを利用する。
  • データベースのアクセス権の管理は、読み取りと書き込みを分ける。