界: API Abuse

API は、呼び出し元と呼び出し先の間のコントラクトです。最も一般的な API の不正使用の形態は、呼び出し元がこのコントラクトの終わりを守らないことによって発生します。たとえば、プログラムが chroot() を呼び出した後に chdir() を呼び出すのに失敗すると、アクティブなルート ディレクトリを安全に変更する方法を指定したコントラクトに違反することになります。ライブラリの悪用のもう 1 つの良い例は、呼び出し先が信頼できる DNS 情報を呼び出し元に返すことを期待することです。この場合、呼び出し元は、呼び出し先の API の動作 (戻り値が認証目的に使用できること) についてある種の仮定をすることで、呼び出し先の API を悪用します。また、相手側から、呼び出し元と呼び出し先のコントラクトを違反することもできます。例えば、コーダーが SecureRandom をサブクラス化し、ランダムではない値を返した場合、コントラクトに違反することになります。

Castor Bad Practices: Query Mode Not Read-Only

Abstract
読み取り専用ではない Castor クエリにより、パフォーマンスが低下する可能性があります。
Explanation
Castor がオブジェクトをロックしていても、他のスレッドによりオブジェクトが読み取られたり書き込まれたりする可能性があります。読み取り専用のクエリは、デフォルトの共有モードと比較して、約 7 倍処理が早くなります。

例 1: 次の例では、クエリモードが SHARED に指定されており、読み取りアクセスと書き込みアクセスの両方が許可されています。

results = query.execute(Database.SHARED);
References
[1] ExoLab Group Castor JDO - Best practice
[2] Standards Mapping - Common Weakness Enumeration CWE ID 265
[3] Standards Mapping - OWASP Application Security Verification Standard 4.0 1.14.5 Configuration Architectural Requirements (L2 L3)
[4] Standards Mapping - Payment Card Industry Data Security Standard Version 1.2 Requirement 7.1.1
[5] Standards Mapping - Payment Card Industry Data Security Standard Version 2.0 Requirement 7.1.1
[6] Standards Mapping - Payment Card Industry Data Security Standard Version 3.0 Requirement 7.1.2
[7] Standards Mapping - Payment Card Industry Data Security Standard Version 3.1 Requirement 7.1.2
[8] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2 Requirement 7.1.2
[9] Standards Mapping - Payment Card Industry Data Security Standard Version 3.2.1 Requirement 7.1.2
[10] Standards Mapping - Payment Card Industry Data Security Standard Version 4.0 Requirement 7.2.2
[11] Standards Mapping - Payment Card Industry Software Security Framework 1.0 Control Objective 5.4 - Authentication and Access Control
[12] Standards Mapping - Payment Card Industry Software Security Framework 1.1 Control Objective 5.4 - Authentication and Access Control
[13] Standards Mapping - Payment Card Industry Software Security Framework 1.2 Control Objective 5.4 - Authentication and Access Control, Control Objective C.2.3 - Web Software Access Controls
[14] Standards Mapping - Security Technical Implementation Guide Version 3.1 APP3500 CAT II
[15] Standards Mapping - Security Technical Implementation Guide Version 3.4 APP3500 CAT II
[16] Standards Mapping - Security Technical Implementation Guide Version 3.5 APP3500 CAT II
[17] Standards Mapping - Security Technical Implementation Guide Version 3.6 APP3500 CAT II
[18] Standards Mapping - Security Technical Implementation Guide Version 3.7 APP3500 CAT II
[19] Standards Mapping - Security Technical Implementation Guide Version 3.9 APP3500 CAT II
[20] Standards Mapping - Security Technical Implementation Guide Version 3.10 APP3500 CAT II
desc.structural.java.castor_bad_practices_query_mode_not_read_only