リンク
- Java言語コーディング規約
- 標準化規約-Java標準化規約(富士通)
- 株式会社電通国際情報サービス版コーディング規約(オブジェクト倶楽部)
- Code Conventions for the Java Programming Language(Sun)
セキュリティ観点
入力チェック
- クライアント側での入力チェックを禁止する。(JavaScript)
文字列のサニタイジング(XSS対策)
- テキスト入力:「&」「<」「>」を禁止
- タグ属性値:「&」「<」「>」を「&;」などに変換
- 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(“.”)を利用して物理パスを利用する。
- データベースのアクセス権の管理は、読み取りと書き込みを分ける。