Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/security-and-static-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Security & Static Analysis

on:
push:
branches: [ "master", "develop" ]
branches: [ "master", "feature/*" ]
pull_request:
branches: [ "master", "develop" ]
branches: [ "master", "feature/*" ]
schedule:
- cron: '30 1 * * 0' # 매주 일요일 01:30 정기검진

Expand Down
4 changes: 4 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

142 changes: 31 additions & 111 deletions README.md

Large diffs are not rendered by default.

178 changes: 49 additions & 129 deletions README_EN.md

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions annotation-processor/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
dependencies {
implementation(project(":annotations"))
}
3 changes: 3 additions & 0 deletions annotations/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
dependencies {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package space.qu4nt.entanglementlib.annotations;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

/// 보안적 책임은 호출자에게 있음을 알리는 어노테이션입니다. 호출자가 해당 어노테이션이
/// 사용된 멤버 사용 시, 작업 종료 후 반드시 보안 작업이 필요함을 의미합니다.
///
/// 예를 들어, 이 어노테이션이 (복사본이 아닌) 원본 데이터를 반환하는 메소드에 사용되었고
/// 해당 메소드를 사용하고자 하는 경우, 반환받은 데이터를 소거해야 함을 의미합니다.
///
/// 또는 이 어노테이션이 사용된 멤버는 네이티브 측의 "호출자 할당" 패턴을 사용한 경우로,
/// 작업이 종료됨과 동시에 네이티브에 할당 해제 함수를 호출해야 함을 의미합니다.
///
/// @author Q. T. Felix
/// @since 1.1.0
@Documented
@Target(ElementType.TYPE_USE)
public @interface CallerResponsibility {

/**
* 책임 전가의 사유 또는 설명를 정의합니다.
*
* @return 책임 전가 사유 또는 설명
*/
String value() default "";

}
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
/*
* Copyright © 2025-2026 Quant.
* Under License "PolyForm Noncommercial License 1.0.0".
*/

package space.qu4nt.entanglementlib;
package space.qu4nt.entanglementlib.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

/**
* 반드시 외부에서만 사용됨을 알리는 마커 어노테이션입니다.
* {@link InternalFactory} 객체 부트스트랩 시, 내부(internal)에서 사용되는 멤버와
* 라이브러리 부트스트랩, 또는 기타 상황 속 내부(internal)에서 사용되는 멤버와
* 외부(external)에서 사용되는 멤버는 다르다는 것을 명확히 하기 위해 사용됩니다.
* <p>
* 이 어노테이션은 타입 레벨에 사용하지 마세요. 혼동이 생길 수 있습니다.
Expand All @@ -19,6 +14,4 @@
* @since 1.1.0
*/
@Target(ElementType.TYPE_USE)
public @interface ExternalPattern {

}
public @interface ExternalPattern { }
Original file line number Diff line number Diff line change
@@ -1,12 +1,4 @@
/*
* Copyright © 2025-2026 Quant.
* Under License "PolyForm Noncommercial License 1.0.0".
*/

package space.qu4nt.entanglementlib;

import com.quant.quantregular.annotations.QuantTypeOwner;
import com.quant.quantregular.annotations.Quanters;
package space.qu4nt.entanglementlib.annotations;

import java.lang.annotation.Documented;

Expand All @@ -16,7 +8,7 @@
///
/// 이 어노테이션이 사용된 요소(멤버)가 본질적으로 안전하지 않으며 보안 위험을 초래할 수 있음을 나타내기 위한
/// 어노테이션입니다.
///
///
/// 구체적으로 이 어노테이션은 사용된 메소드, 필드 또는 타입 등의 멤버가 다음 이유 중 하나로 인해 안전하지
/// 않음을 나타냅니다.
///
Expand All @@ -26,22 +18,25 @@
/// - 보안 취약점 발견
///
/// 이 API를 사용하려면 기본 구현 및 잠재적인 부작용에 대한 깊은 이해가 필요합니다.
///
///
/// # Important
///
/// 이 요소를 부적절하게 사용하면 `메모리 손상`, `데이터 유출` 또는 **임의 코드 실행을 포함하되 이에 국한되지 않는
/// 심각한 보안 취약점이 발생**할 수 있습니다. 또한 정의되지 않은 동작이나 애플리케이션 불안정을 초래할 수도 있습니다.
///
///
/// 사용자는 절대적으로 필요한 경우에만 이 요소를 사용해야 하며, 위험을 완화하기 위해 적절한 보안 조치와
/// 검증 로직이 마련되어 있는지 확인해야 합니다.
///
/// # Note
///
/// 이 어노테이션이 사용된 멤버는 `# Security` 헤더에 `Unsafe` 근거가 기록되어야 합니다.
/// 이 어노테이션이 사용된 멤버는 `# Unsafe` 헤더에 근거가 기록되어야 합니다.
///
/// @author Q. T. Felix
/// @since 1.1.0
@Documented
@QuantTypeOwner(Quanters.Q_T_FELIX)
public @interface Unsafe {

/// 명확한 `unsafe` 사유입니다.
/// @return 명확한 `unsafe` 사유
String value() default "";
}
Loading
Loading