ホームページ >Java >&#&チュートリアル >Web開発セキュリティにおけるJavaの概要
1. お客様が入力したオリジナルデータの検証はスクリプトに依存しません。 JavaScriptなどクライアント側で入力データを検証する方が便利ですが、セキュリティ上の理由から使用できません。スクリプトは安全ではないため、ユーザーがスクリプトをブロックする可能性があります。ユーザー データをサーバーに送信し、サーバー上の文字列の正当性を検証できます。 2. HTML の入力識別子 & lt; '' & gt; '、
3. データに埋め込まれている ' '" ' を削除します。 ' ' → 'is>' 'isμ' '&39;' は 1 つおきに置き換えられます。 (2) (3) クロスサイト スクリプティング (CSS) が原因で発生するため、解決策はスクリプト シンボルの表示を避けることです。
URLで許可されるテキスト
英数字「;」「/」「?」「:」「@」「&」「=」「+」「$」「,」「-」「_」「. "!""~""*""'"("")""%"
4. 保護する必要があるすべての Web ページにはユーザー認証局が必要です。
ログイン後、SESSION にユーザー ID を保存し、検証のために保護する必要がある各ページにスクリプトを追加します。セッションが空の場合、検証は失敗し、再度ログインする必要があります。
<% If Len(Session("ID")) = 0 Then Response.Redirect "index.html" End If %>
以下の情報は特別に処理されます:
*パスワード
*Webメールのメール内容等の個人データ
*氏名、年齢、住所等の個人情報
*Webアプリケーションシステム内のデータ構造
* Webサーバー内の最大チケット数などの各種システム情報
→[1-3.]
5. 事前に推測できるセッションIDは定義できません→[1-3.]
6キーは重要です
パラメータを渡すには post を使用するときに、データ パラメータを URL に含めないでください。そしてその対策:
*SSLによる暗号化通信
*干渉戦略。
*会話中のハイジャック対策
7. 隠しフィールドのデータは変更、転送できません(隠しフィールドの値は表示できませんが、転送され、HTMLソースファイルで値を確認できます)値が変更され転送されないようにするため) データの取得に hidden を使用しないでください。改善方法は、セッションを使用して隠しデータを保存することです。 →[1-5.]
8. の
9. SQLを書くときは変数と組み合わせて書きます。チェックしてから送信する(ユーザーが送信した変数をフィルタリングしてから SQL テキストに入れる) → [2-1.]
10. SQL を組み立てる際には、入力データの (') とセミコロン (;) が必要です。加工されます。理由は9)→[2-1.]
11.と同じです。スクリプトにデータベースのパスワードを埋め込まないでください。機密データの設定については、構成ファイルで設定することも、Windows ではレジストリで設定することもできます。 →[2-2.]
12. データベースにアクセスする際には、別途ユーザー権限を設定します。ユーザーの権限はそれぞれ異なりますが、これはデータベースの権限設定を利用して実現でき、セキュリティの向上に役立ちます。 →[2-3.]
13. Javaクラスパッケージのインポート。必要なクラスのみをインポートし、未使用のパッケージやクラスをインポートしないでください。これにより、セキュリティが向上し、他のユーザーが冗長なクラスを使用して情報を取得するのを防ぐことができます。 →[3-1.]
14 セキュリティ ポリシーを使用します。ファイルの実行権限を制御するファイル (ポリシー) 設定。
ファイルパス:${java.home}/lib/security/java.policy
package org.penglee.policy.test; //permission java.io.FilePermission "c://winnt//system32//notepad.exe", "execute"; import java.io.IOException; public class NoSecurityManager { public static void main(String[] args) { // SecurityManager mySecurityManager = new SecurityManager (); // System.setSecurityManager (mySecurityManager); try { Runtime myRuntime = Runtime.getRuntime (); myRuntime.exec ("c://winnt//system32//notepad.exe"); } catch (IOException e) { e.printStackTrace(); } } }
→[3-1.]
15. クラス内のデータの変更を制限するにはプライベートクラス(private)として設定します。 、または実装するインターフェイスを定義します。 →[3-2.]
16. プログラムによってシリアル化されたデータは暗号化されていません。シリアル化されたデータを使用して機密データを読み取ることを防ぐために、シリアル化されたデータを処理することができます。 →[3-3.]
17. 明らかに継承する必要があるクラス以外はfinalクラスを使用します。これにより、継承が悪用されて機密情報が取得されるのを防ぎます。 →[3-4.]
18. エラーをスローするには AssertionError を使用します。詳細はこのクラスのAPIドキュメントを参照してください→[3-5.]
19. データのセキュリティを高めるため、スレッド同期によるデータの不整合に注意してください。 →[3-6.]
20. 入力では相対パスを避けてください。相対パスが含まれる場合はエラーとなります。兄弟フォルダーにアクセスしていることが原因である可能性があります。 →[4-1.]
26. 平文パスワードは避けるようにしてください。機密データは暗号化するのが最善です →[9-1.]
27. sha暗号化を使用することをお勧めします。 →[9-1.]
28.29.プログラムを使用してパスをチェックし (相対パスを禁止)、ファイル名とデータのセキュリティをチェックし、特殊文字が含まれている場合はエラーを報告します。 →[9-2.]
30.31.教えすぎないように、ログイン時のエラーメッセージには十分注意して実行してください。ユーザーに表示されるエラー メッセージは、ユーザーがプログラムの内部構造に関する情報を推測するのを妨げるのに十分であってはなりません。 →[9-3.]
32. 権限の使用が必要なデータ処理の部分は可能な限り小さくし、一般的なデータ処理権限の蔓延は可能な限り回避する必要があります。ログインには権限の低いユーザー名を使用し、一般データの処理に特別な権限を使用しないようにしてください。 →[9-4.]
以上がWeb開発セキュリティにおけるJavaの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。