- 소프트웨어에서 워터마크 삭제 등과 같이 소프트웨어가 불법으로 변경(unauthorized modifications)되었을 경우, 그 소프트웨어가 정상 수행되지 않게 하는 기법이다. - 소프트웨어 변조 공격을 방어하기 위해 프로그램에 변조검증코드(tamper-proofing code)를 삽입하는 것도 한 방법으로, 변조검증코드의 용도는 첫째 프로그램이 변경되었는지를 탐지하는 것이고, 둘째는 변조가 탐지되었다면 프로그램이 실행되지 않게 한다. - 소프트웨어의 위변조 방지 역공학 기술의 일종으로 디지털 콘텐츠의 관련 산업이나 전자상거래 또는 보호해야 할 소프트웨어가 있는 다양한 산업 분야에 적용된다.
항목 | 기호 |
---|---|
합집합 | A ( ) B |
차집합 | A ( ) B |
카티션 프로덕트 | A ( ) B |
프로젝트 | A ( ) B |
조인 | A ( ) B |
[보기] ㄱ.NFT ㄴ.JWT ㄷ.SAML ㄹ.accessToken ㅁ.SSO ㅂ.OIDC ㅅ.Autentication ㅇ. OAuth ㅈ.Cookie ㅊ.Refresh Token *************************************************************************************** - 사용자가 사용자 이름 및 암호와 같은 자격 증명을 공유하지 않고도 타사 애플리케이션이 데이터 또는 리소스에 액세스할 수 있도록 권한을 부여할 수 있는 개방형 표준 프로토콜이다. - 사용자가 데이터에 대한 제어를 유지하면서 리소스에 대한 액세스 권한을 부여할 수 있는 안전하고 표준화된 방법을 제공하며, 액세스 토큰을 사용하여 타사 애플리케이션에 리소스에 대한 액세스 권한을 부여하는 메커니즘을 사용자에게 제공하는 방식으로 작동한다. - 사용자가 응용 프로그램에 대한 액세스 권한을 부여하면 응용 프로그램은 사용자를 대신하여 사용자의 리소스 또는 데이터에 액세스하는 데 사용할 수 있는 액세스 토큰을 받는다. - 암호와 같은 사용자의 자격 증명은 타사 응용 프로그램과 공유되지 않으며, 클라우드 스토리지 서비스, 온라인 마켓 플레이스 및 금융 서비스를 포함한 다른 많은 응용 프로그램 및 서비스에서도 사용된다. - Facebook, Twitter 및 LinkedIn과 같은 소셜 미디어 플랫폼에서 널리 사용되어 사용자가 소셜 미디어 데이터에 대한 액세스 권한을 타사 애플리케이션에 부여할 수 있도록 한다. - 타사 애플리케이션에 대한 사용자 자격 증명의 노출을 최소화하여 향상된 보안, 간소화된 애플리케이션 개발, 사용자가 리소스에 대한 액세스 권한을 쉽게 부여하거나 취소할 수 있도록 하여 향상된 사용자 환경 등 여러 가지 이점을 제공한다.
#include struct good { char name[10]; int age; }; void main(){ struct good s[] = {"Kim",28,"Lee",38,"Seo",50,"Park",35}; struct good *p; p = s; p++; printf("%sn", p-> name); printf("%sn", p-> age); }
[보기] 구현, 요구조건 분석, 개념적 설계, 물리적 설계, 논리적 설계
a = "REMEMBER NOVEMBER" b = a[:3] + a[12:16]; c = "R AND %s" % "STR"; print(b+c);
class Parent { public int compute(int num){ if(num <=1) return num; return compute(num-1) + compute(num-2); } } class Child extends Parent { public int compute(int num){ if(num<=1) return num; return compute(num-1) + compute(num-3); } } class Good { public static void main (String[] args){ parent obj = new Child(); System.out.print(obj.compute(4)); } }
( 괄호 )은/는 여러 개의 사이트에서 한번의 로그인으로 여러가지 다른 사이트들을 자동적으로 접속하여 이용하는 방법을 말한다. 일반적으로 서로 다른 시스템 및 사이트에서 각각의 사용자 정보를 관리하게 되는데 이때 하나의 사용자 정보를 기반으로 여러 시스템을 하나의 통합 인증을 사용하게 하는 것을 말한다. 즉 하나의 시스템에서 인증을 할 경우 타 시스템에서는 인증 정보가 있는지 확인하고 있으면 로그인 처리를 하도록 하고, 없는 경우 다시 통합 인증을 할 수 있도록 만드는 것을 의미한다.
어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도이다. 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생할 수 있다.
public class Main { static int[] MakeArray(){ int[] tempArr = new int[4]; for(int i=0; i<tempArr.Length;i++){ tempArr[i] = i; } return tempArr; } public static void main(String[] args){ int[] intArr; intArr = MakeArray(); for(int i=0; i < intArr.Length; i++) System.out.print(intArr[i]); } }
( A )은/는 클래스들 사이의 전체 또는 부분 같은 관계를 나타내는 것이고, ( B )은/는 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 IS-A관계라하며, 일반화 관계로 모델링한다.
( )은/는 TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜이다. ( ) 프로토콜은 보통 다른 호스트나 게이트웨이 와 연결된 네트웍에 문제가 있는지 확인하기 위한 목적으로 주로 사용된다. ( ) 을/를 이용한 공격에는 ( ) Flooding가 있는데 ping 명령어를 통한 ( ) 패킷을 연속적으로 계속 보내어 서버의 요청에 응답으로 인한 다른작업을 하지 못하도록 하는 공격이다.
#include int main(){ int *arr[3]; int a = 12, b = 24, c = 36; arr[0] = &a; arr[1] = &b; arr[2] = &c; printf("%dn", *arr[1] + **arr + 1); }
#include <stdio.h> int isPrime(int number) { int i; for (i=2; i<number; i++) { if (number % i == 0) return 0; } return 1; } int main(void) { int number = 13195, max_div=0, i; for (i=2; i<number; i++) if (isPrime(i) == 1 && number % i == 0) max_div = i; printf("%d", max_div); return 0; }
class Parent { int x = 100; Parent() { this(500); } Parent(int x) { this.x = x; } int getX() { return x; } } class Child extends Parent { int x = 4000; Child() { this(5000); } Child(int x) { this.x = x; } } public class Main { public static void main(String[] args) { Child obj = new Child(); System.out.println(obj.getX()); } }
( )은/는 복잡한 시스템을 개발하기 쉽도록 클래스나 객체을 조합하는 패턴에 속하며, 대리라는 이름으로도 불린다. 내부에서는 객체 간의 복잡한 관계를 단순하게 정리해 주고, 외부에서는 객체의 세부인 내용을 숨기는 역할을 한다.