보안/웹(Web)
-
1. 개요 - PHP 로 서버를 작성할 때, MySQL 데이터베이스를 사용하는 경우 사용할 수 있는 함수. 주로 SQL Injection 공격을 방어하기 위해 사용한다. - NULL(\x00), \n, \r, \, ', " 문자 앞(왼쪽)에 \를 붙여 사용자의 입력에 의해 악의적인 쿼리문이 실행되는 것을 막는다. 1.1. mysqli_real_escape_string mysqli_real_escape_string(mysqli $db_sql, string $str) // 특정 문자를 이스케이프 처리한 후의 문자열 반환 $db_sql 매개변수는 해당 소스코드에서 연동한 데이터베이스이며, $str 은 데이터베이스에 명령할 쿼리문이다. 이 함수가 호출되면 특정 문자를 이스케이프 처리한 후의 문자열을 반환한다.
[PHP] mysqli_real_escape_string 함수1. 개요 - PHP 로 서버를 작성할 때, MySQL 데이터베이스를 사용하는 경우 사용할 수 있는 함수. 주로 SQL Injection 공격을 방어하기 위해 사용한다. - NULL(\x00), \n, \r, \, ', " 문자 앞(왼쪽)에 \를 붙여 사용자의 입력에 의해 악의적인 쿼리문이 실행되는 것을 막는다. 1.1. mysqli_real_escape_string mysqli_real_escape_string(mysqli $db_sql, string $str) // 특정 문자를 이스케이프 처리한 후의 문자열 반환 $db_sql 매개변수는 해당 소스코드에서 연동한 데이터베이스이며, $str 은 데이터베이스에 명령할 쿼리문이다. 이 함수가 호출되면 특정 문자를 이스케이프 처리한 후의 문자열을 반환한다.
2023.01.09 -
보호되어 있는 글입니다.
XSS (Cross Site Scripting)보호되어 있는 글입니다.
2022.12.12 -
프로토타입 자바스크립트에서 모든 객체들이 메소드와 속성을 상속 받기 위한 객체 객체를 생성할 때 기본적으로 상속되며 여러 메소드를 포함합니다. 새로운 인스턴스가 생성될 때, 생성된 인스턴스는 상위 객체의 프로토타입을 상속받아 생성되고, 인스턴스의 상위 객체 또한 더 위의 상위 객체로부터 프로토타입 객체를 상속받아 생성됩니다. 이렇게 프로토타입 객체를 상속받고 또 상속받는 것을 '프로토타입 체인' 이라고 합니다. 프로토타입이 상속되었기 때문에 아무런 내용도 없이 생성되었던 obj 객체에서도 다양한 메소드를 사용할 수 있습니다. 상속받은 여러 메소드 중 valueOf 함수를 사용해보겠습니다. 객체에서 메소드가 사용되면 먼저 해당 객체에서 메소드를 찾고, 존재하지 않으면 상속받은 프로토타입에서 메소드를 찾게됩..
프로토타입 오염 (Prototype Pollution)프로토타입 자바스크립트에서 모든 객체들이 메소드와 속성을 상속 받기 위한 객체 객체를 생성할 때 기본적으로 상속되며 여러 메소드를 포함합니다. 새로운 인스턴스가 생성될 때, 생성된 인스턴스는 상위 객체의 프로토타입을 상속받아 생성되고, 인스턴스의 상위 객체 또한 더 위의 상위 객체로부터 프로토타입 객체를 상속받아 생성됩니다. 이렇게 프로토타입 객체를 상속받고 또 상속받는 것을 '프로토타입 체인' 이라고 합니다. 프로토타입이 상속되었기 때문에 아무런 내용도 없이 생성되었던 obj 객체에서도 다양한 메소드를 사용할 수 있습니다. 상속받은 여러 메소드 중 valueOf 함수를 사용해보겠습니다. 객체에서 메소드가 사용되면 먼저 해당 객체에서 메소드를 찾고, 존재하지 않으면 상속받은 프로토타입에서 메소드를 찾게됩..
2022.12.05 -
1) CSP - XSS 나 데이터를 삽입하는 종류의 공격이 발생하였을 때 피해를 줄이고 웹 관리자가 공격 시도를 보고받을 수 있도록 새롭게 추가된 보안 계층 - XSS 공격은 브라우저가 서버로부터 전달받은 컨텐츠를 신뢰한다는 점을 이용하는데, CSP 는 이를 방지하기 위해 웹 페이지에 사용될 수 있는 자원의 위치, 출처 등에 제약을 걸 수 있다. - CSP 구문은 일반적으로 Content-Security-Policy 로 HTTP 헤더에 추가하여 적용할 수 있다 예시) GET / HTTP/1.1 Host: 127.0.0.1:8080 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Wi..
CSP(Content Security Policy)1) CSP - XSS 나 데이터를 삽입하는 종류의 공격이 발생하였을 때 피해를 줄이고 웹 관리자가 공격 시도를 보고받을 수 있도록 새롭게 추가된 보안 계층 - XSS 공격은 브라우저가 서버로부터 전달받은 컨텐츠를 신뢰한다는 점을 이용하는데, CSP 는 이를 방지하기 위해 웹 페이지에 사용될 수 있는 자원의 위치, 출처 등에 제약을 걸 수 있다. - CSP 구문은 일반적으로 Content-Security-Policy 로 HTTP 헤더에 추가하여 적용할 수 있다 예시) GET / HTTP/1.1 Host: 127.0.0.1:8080 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Wi..
2022.09.23 -
1. 디코딩 전 필터링 일반적으로는 웹에서 클라이언트로부터 전달받은 값을 디코딩하여 사용자의 입력값을 검증하지만, 만약 디코딩하기 전에 검증을 수행하면 공격자가 더블 인코딩된 값을 전송하여 검증을 우회할 수 있게 됩니다. 2. 더블 인코딩 말 그대로 전송하는 값을 두번 인코딩하는 것입니다. 예를 들어 설명해보겠습니다. 이 코드의 일부를 한번 인코딩한 값은 다음과 같습니다. %3Cscript%3Ealert%28%27hello%27%29%3C/script%3E
디코딩 전 필터링1. 디코딩 전 필터링 일반적으로는 웹에서 클라이언트로부터 전달받은 값을 디코딩하여 사용자의 입력값을 검증하지만, 만약 디코딩하기 전에 검증을 수행하면 공격자가 더블 인코딩된 값을 전송하여 검증을 우회할 수 있게 됩니다. 2. 더블 인코딩 말 그대로 전송하는 값을 두번 인코딩하는 것입니다. 예를 들어 설명해보겠습니다. 이 코드의 일부를 한번 인코딩한 값은 다음과 같습니다. %3Cscript%3Ealert%28%27hello%27%29%3C/script%3E
2022.09.23 -
해킹 : 공격의 예술 책의 tinyweb 공격해보기 실습. 책에서 사용하는 익스플로잇 코드가 하드코딩된 메모리 주소를 이용하여 공격을 진행하기 때문에 원활한 실습을 위해 ASLR 을 끄고 진행하였다. 먼저 책에 있는 tinyweb 코드를 작성하고 실행시켜보았다. tinyweb 서버의 취약점은 프로그램에서 사용하는 recv_line 함수에서 발생한다. 서버에서 받아들이는 데이터의 길이 검증 코드가 없기 때문에 버퍼 오버플로우 취약점이 발생한다. * recv_line 함수 int recv_line(int sockfd, unsigned char* dest_buffer) { #define EOL "\r\n" #define EOL_SIZE 2 unsigned char* ptr; int eol_matched = 0..
[해킹:공격의 예술] 실습 (tinyweb exploit)해킹 : 공격의 예술 책의 tinyweb 공격해보기 실습. 책에서 사용하는 익스플로잇 코드가 하드코딩된 메모리 주소를 이용하여 공격을 진행하기 때문에 원활한 실습을 위해 ASLR 을 끄고 진행하였다. 먼저 책에 있는 tinyweb 코드를 작성하고 실행시켜보았다. tinyweb 서버의 취약점은 프로그램에서 사용하는 recv_line 함수에서 발생한다. 서버에서 받아들이는 데이터의 길이 검증 코드가 없기 때문에 버퍼 오버플로우 취약점이 발생한다. * recv_line 함수 int recv_line(int sockfd, unsigned char* dest_buffer) { #define EOL "\r\n" #define EOL_SIZE 2 unsigned char* ptr; int eol_matched = 0..
2022.03.21