728x90
300x250
[PHP] PHP 5.6 - xFrame 공격 방지하기(Clickjacking 피하기)

 

이번에 소개할 것은 xFrame 기반의 공격을 방지하는 방법에 대해서 소개하겠다.

 

대상 프로그램: PHP 5.6

 


1. 클릭 재킹(Clickjacking)

 

클릭 재킹 (사용자 인터페이스 교정 공격, UI 교정 공격, UI 교정)은 웹 사용자를 클릭하여 사용자가 클릭 한 것으로 보이는 것과 다른 것을 클릭하여
기밀 정보를 공개하거나 자신의 컴퓨터를 제어하는 악의적인 기법이다.


겉보기에 무해한 웹 페이지를 클릭해라. 이것은 다양한 브라우저와 플랫폼에 걸친 취약점인 브라우저 보안 문제이다.

클릭 잭은 다른 기능을 수행하는 것으로 보이는 버튼을 클릭하는 것과 같이 사용자의 지식없이 실행할 수 있는 임베디드 코드 또는 스크립트 형태를
취한다.
"클릭 재킹"이라는 용어는 2008년에 Jeremiah Grossman과 Robert Hansen이 만들었다.
클릭 재킹(Clickjacking)은 컴퓨터가 그 권한을 오용하는 것에 순진하게 속아 넘어갈 때를 기술하는 용어인 혼란스러운 대리 문제의 한 예이다.


[설명]
HTML 웹 페이지의 겉보기에 무해한 기능을 사용하여 예기치 않은 작업을 수행 할 수 있으므로 클릭 재킹이 가능하다.

클릭 재킹 페이지는 숨겨진 링크를 클릭하여 원치 않는 작업을 수행하도록 사용자를 속인다.
클릭 재킹 된 페이지에서 공격자는 투명 레이어에서 다른 페이지를 로드한다.
사용자는 보이지 않는 페이지에서 실제로 작업을 수행하는 동안 보이는 버튼을 클릭한다고 생각한다.
숨겨진 페이지는 인증 된 페이지 일 수 있다. 따라서 공격자는 사용자가 의도하지 않은 작업을 수행하도록 속일 수 있다.
사용자가 숨겨진 페이지에서 진실로 인증되었으므로 나중에 공격자를 추적 할 방법이 없다.

 

결과적으로 웹 브라우저가 가지고 있는 취약점을 막는 것이다.

 


2. php코드에 클릭 재킹 피하기 코드 삽입하기

 

<      ? php

header("Content-Type: text/html; charset=UTF-8");
header('X-Frame-Options: DENY');  // 'X-Frame-Options'
// header('X-Frame-Options: ALLOW-FROM https://youtube.com/');

?    >

 

이런 형태로 삽입할 수 있다.

 


3. 참고자료(Reference)

 

1. Clickjacking, Last Modified 07-27-2018, 08:17 (UTC)., Accessed by 2018-07-31, https://en.wikipedia.org/wiki/Clickjacking, Wikipedia.

2. X-Frame-Options SAMEORIGIN blocking iframe on my domain, Last Modified, Accessed by 2018-07-31, https://stackoverflow.com/questions/12182768/x-frame-options-sameorigin-blocking-iframe-on-my-domain, Stack Overflow

3. header, Last Modified, Accessed by 2018-07-31, http://php.net/manual/en/function.header-remove.php, PHP.net

4. X-Frame-Options, Last Modified, Accessed by 2018-07-31, https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options, MDN(Developer Mozila)

반응형
728x90
300x250
[C++] G++로 다수 Header와 Cpp파일 처리하기(Linux)

 

Main.cpp

A.h

A.cpp(또는 inl)

B.h

B.cpp(또는 inl)

C.h

C.cpp(또는 inl)

 

이런 식으로 다수의 파일을 목적프로그램(Object)으로 출력해야합니다.

Header의 경우 컴파일하게 되면, Gch파일로 압축 컴파일됩니다.

크게 걱정하실 필요는 없으며, Main.cpp과 다수의 Cpp의 Object파일을 중점으로 컴파일하면, 이상 없이 처리됩니다.

 

다소 번거롭고 짜증 나지만, 각각의 절차를 MakeFile의 형태로 만들지 않은 이상 수작업으로 진행하셔야 합니다.

 

G++ -c Main.cpp

G++ -c A.h A.cpp

G++ -c B.h B.cpp

G++ -c C.h C.cpp

 

G++ -o Main.o A.o B.o C.o

 

만약 C의 파일이 C.cpp가 아니고 C_inc.h나 inl일 때

Gch로 파일이 생성되면 cpp파일 묶음들만 컴파일하시면 됩니다.

 

G++ -o Main.o A.o B.o
반응형
728x90
300x250
[C++] C++ Template Class 헤더 분리

 

Template Class를 헤더로 분리하는 방법은. inl 파일로 분리해서 하는 방법이 있다.
대형 3D엔진에서는. inl이란 파일 형식으로 CPP 파일 대신해서 사용한다.
사실 템플릿 함수 자체가 함수를 만들어내는 임무를 수행하고 있다.

 

일반 함수 원형의 경우,

int hama(int a, int b)

{

       a + b

}

 

이런 꼴이라고 가정하면

템플릿 자료형(int, char 등..) hama(템플릿 자료형 a, 템플릿 자료형 b)

{

     a + b;

}

 

이런 식으로 함수 원형 틀은 그대로 두되 자료형을 자유롭게 바꿔낼 수 있다.

Header라는 영역에서밖에 못 사용하는 것도 아무래도 이러한 이유가 있기 때문에 그러지 않을까 생각한다.

결론은 분리하는 방법은 편법답게 하는 방법이 있는데,
첫 번째로, header를 header 1, header 2로 분리하는 방법

 

헤더 1이에요

class 헤더1{

 

}

 

#include "헤더1.h"

 


두 번째로, header를 inl으로 맨 하단에 #include를 시키는 방법이 될 수 있다.

 

나 헤더

 

class 멍청한클래스{

 

}

 

#include "aaa.inl"

 

/// aaa.inl

구현 하시죠.ㅋㅋㅋ

 

그냥 실험하는 목적이거나 단순한 거면, 헤더 파일 하나에 몰아넣는 게 정신건강에 이롭지 않나 생각한다.

반응형

+ Recent posts