[CentOS] SELinux 설정 / 해제[CentOS] SELinux 설정 / 해제
Posted at 2018. 10. 23. 16:27 | Posted in Linux/CentOS출처 : https://www.lesstif.com/pages/viewpage.action?pageId=6979732
■ SELinux 설정 / 해제
SELinux는 Linux의 보안을 강화해 주는 보안 강화 커널이고 zero-day 공격 및 buffer overflow 등 어플리케이션 취약점으로 인한 해킹을 방지해 주는 핵심 구성요소이다.
특정 서비스가 SELinux 때문에 동작하지 않는다면 SELinux를 끄기 보다는 해당 서비스가 SELinux 하에서 잘 동작하도록 설정을 수정하는걸 권장한다.
#01. SELinux 동작모드
enforce, permissive, disable 세가지 모드가 있으며 Red Hat Enterprise Linux / CentOS를 설치하면 default 로 enforce mode로 동작하며 SELinux의 rule에 어긋나는 operation은 거부된다.
현재 SELinux의 동작 모드는 sestatus 명령으로 확인할 수 있다.
SELinux 모드 확인 |
# sestatus SELinux status: enabled SELinux mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 24 Policy from config file: targeted |
Permissive mode는 rule에 어긋나는 동작이 있을 경우 audit log를 나믹고 해당 operation은 허용된다.
개발 서버일 경우 특정 daemon 이나 서비스에 문제가 있을 경우 setenforce 0으로 Permissive mode 로 전환하여 문제해결 후 enforce mode로 전환하는걸 추천한다.
|
# setenforce 0 # sestatus SELinux status: enabled SELinux mount: /selinux Current mode: permissive Mode from config file: enforcing Policy version: 24 Policy from config file: targeted |
#02. SELinux 해제
① vi편집기로 실행 selinux 실행 # vi /etc/sysconfig/selinux ② SELINUX의 enforcing 라고 되어 있는 부분을 disabled로 수정한다. # This file controls the state of SELinux on the system. ③ CentOS를 재시작 한다. # reboot |
※ SELinux 해제한 경우
· 인터넷에 연결된 리눅스 서버라면 SELinux 해제는 결코 추천하지 않는다.
· 해제할 경우 다시 활성화 시키려면 재부팅이 필요하며 재부팅시 모든 자원에 대해 보안 레이블을 설정해야 하므로 부팅시간이 매우 오래 걸릴 수 있다.
· SElinux를 해제후 다시 켤 경우 relabel이 필요하며 이때 잘못된 설정이 있을 경우 부팅이 안되거나 ssh로 원격 접속이 불가능할 수 있으므로 enforcing 모드가 아닌 permissive로 설정후 재부팅하는것을 권장한다.
[JavaScript] 읽기 쉽고, 유지보수하기 쉬운 코드 작성하기 - 코딩규약[JavaScript] 읽기 쉽고, 유지보수하기 쉬운 코드 작성하기 - 코딩규약
Posted at 2018. 10. 12. 12:01 | Posted in JavaScript & jQuery/JavaScript■ 깔끔한 코드, 작성하고 있는가?
AJAX가 보금되에 따라 JavaScript에서도 비교적 대규모의 코드를 작성할 기회가 많아졌다. 그에 따라서 프로그램을 단 한번만 작성해서 「자, 이걸로 마지막!」 이라고 하는 일은 점차 없어지게 되었다. 애플리케이션을 운용해 나가는 상황에서 버그가 발견되면 수정하거나 나중에 발생한 요구 안건에 따라 코드를 추가 / 갱신하는 등 프로그램은 항상 변경될 가능성에 노출되어 있다.
그리고 프로그램을 변경하는 경우에 우선적으로 필요로 하는 것은 「코드를 읽어 이해하는」 분석 작업이다. 이 「읽고 이해하는」이라고 하는 작업은 때로는 「작성하기」보다 큰 이인경우도 있다. 자신이 작성한 코드라 해도 시간이 지난 후에 읽어보게 되면 의외로 뭐가 뭔지 알지 못하는 경우가 많은데, 그것이 타인의 코드라면 더 말할 것도 없다. 그러므로 일상적으로 발생할 수 있는 변경을 생각하면 깔끔한(=읽기 쉬운) 코드를 기술하는것이 중요하다.
깔끔한 코드라는 것이 어떤 건지 이미지가 좀처럼 떠오르지 않을 수도 있다. 그런 사람은 코딩 규약이라는 것을 추천한다. 코딩 규약이란, 이른바 변수의 명명규칙에서부터 스페이스나 인덴트 넣는 방법, 코멘트 쓰는 법 등 통일성을 취한 코드를 기술하는 데 필요한 룰을 정하는 것이다. 규약에 따라 코드를 기술함으로써 최소한 「더럽지 않은」 코드를 기술할 수 있게 된다.
JavaScript에서도 이러한 코딩 규약이 Mozilla Developer Center 에서 JavaScript Style Guide 로 공개되어 있다.
여기에 정해져 있는 규약이 전부는 아니지만, 한번 훑어보면 좋은 공부가 될 것이다.
다음은 JavaScript Style Guide 에서 제시하고 있는 주요 포인트들이다(어디까지나 규약이며, 구문 규칙이 아닌 점에 주의하길 바란다).
#01. 기본
-. 1행당 자릿수는 80문자 이하로 할것
-. 파일의 말미는 개행할 것
-. 함수나 객체 등의 정의 블록의 전후는 공백 행으로 단락지을것
-. 문자 코드 세트는 UTF-8
#02. 공백
-. 인스턴트는 스페이스 2개로 표현할 것(탭은 사용하지 않는다.)
-. 2항 연산자는 공백으로 단락지을것
-. 콤마 / 세미콜론, 키워드의 후방에는 공백을 포함할것(다만, 줄 끝의 공백은 불필요)
#03. 명명규칙
-. 변수, 함수명은 선두 소문자의 camelCase 형식
-. 정수명은 모두 대문자의 언더스코어 형식
-. 생성자(객체)명은 선두 대문자의 CamelCase 형식
-. 프라이비트 멤버는 「 _ 」로 시작할것
-. 이벤트 핸들러 함수는 [on]으로 시작할것
#04. 그 외
-. 모든 변수는 선언, 초기화할 것
-. 변수의 선언이 중복되지 않을 것
-. 배열, 객체의 생성에는 […], {…} 등의 리터럴 구문을 이용할것
-. 논리값 true / false와 비교하지 않을것
■ Google 표준의 코딩 스타일
또한 Google이 제공하고 있는 Google JavaScript Style Guide 도 있다. 앞의 것과 중복하지 않는 범위에서 중요한 것을 정리해 두었다.
· .js 파일의 이름은 소문자로 통일
· 세미콜론은 생략하지 않는다.
· 문자열의 괄호에는 「"」쌍 따옴표 보다 「'」홑 따옴표를 우선해 이용한다.
· 기본 데이터형(String)이나 number, boolean등)이 랩퍼 객체는 사용하지 않는다.
· 네임스페이스를 이용하고, 글로벌 레벨의 이름은 최소한으로 억제한다.
· 블록을 나타내는 {...}의 전에 개행은 너지 않는다.
· eval 함수는 deserialize에서만 이용한다.
· 빌트인 객체의 프로토타입은 고쳐 써선 안 된다.
· with 명령은 이용하지 않는다.
· for...in 명령은 연관배열 / 해시에서만 이용한다.
여기서 나타나고 있는 가이드 라인은 코드를 일기 쉽게 하기만 할 뿐만 아니라 안전한 코드를 기술한다는 의미에서도 중요하다.
'JavaScript & jQuery > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트에서의 Test Suite (0) | 2018.12.25 |
---|---|
[JavaScript] Password 형식 검사하기 (1) | 2018.10.24 |
[JavaScript] email 형식 검사하기 (0) | 2018.09.27 |
[JavaScript] Audio 객체를 이용한 음악 재생 (0) | 2018.09.27 |
[JavaScript] 현재 위치를 지도에 찍어주는 Geolocation (0) | 2018.09.13 |
[PHP] DB 입력 or 출력시 따옴표(') 처리하기[PHP] DB 입력 or 출력시 따옴표(') 처리하기
Posted at 2018. 10. 2. 09:46 | Posted in PHP■ addslashes, stripslashes 함수를 이용한 따옴표 처리
PHP에서 문자열에 따옴표 큰 따옴표( " ), 작은 따옴표( ' )가 들어간 내용을 DB에 입력 및 출력시 addslashes와 stripslashes 함수를 사용한다.
그런데 HTML에 값을 직접 넣지 않고, PHP에서 echo등을 통해 직접 출력하는 경우 문제가 생겨 간단히 정리하고자 한다.
① addslashes : 문자열에 따옴표가 삽입된 경우 문자열 앞에 역슬래쉬(\')를 기호를 붙여 사용한다.
② stripslashes : addslashes를 사용한 해당 문자열의 역슬래쉬(\') 기호를 제거한다.
단순하지만 아래 출력 코드와 같이 PHP콛 상에서 input 태그에 값을 넣어 사용하는 경우는 아래와 같이 처리하면 된다.
# 소스코드
<?php <? // 테스트할 따옴표가 들어간 문구 $str = "Rockin' In Rhythm"; echo $str; echo "<br/><hr/><br/>"; // addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\') echo "addslashes : ".addslashes($str); echo "<br/><hr/><br/>"; // stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\') echo "stripslashes : ".stripslashes($str); echo "<br/><hr/><br/>"; // value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다. echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str)); ?> 출처: http://wickedmagic.tistory.com/580 [사악미소의 현대마법의 공방] <? // 테스트할 따옴표가 들어간 문구 $str = "Rockin' In Rhythm"; echo $str; echo "<br/><hr/><br/>"; // addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\') echo "addslashes : ".addslashes($str); echo "<br/><hr/><br/>"; // stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\') echo "stripslashes : ".stripslashes($str); echo "<br/><hr/><br/>"; // value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다. echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str)); ?> 출처: http://wickedmagic.tistory.com/580 [사악미소의 현대마법의 공방] <? // 테스트할 따옴표가 들어간 문구 $str = "Rockin' In Rhythm"; echo $str; echo "<br/><hr/><br/>"; // addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\') echo "addslashes : ".addslashes($str); echo "<br/><hr/><br/>"; // stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\') echo "stripslashes : ".stripslashes($str); echo "<br/><hr/><br/>"; // value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다. echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str)); ?> 출처: http://wickedmagic.tistory.com/580 [사악미소의 현대마법의 공방] |
# 출력결과
위와같이 input 태그에 value 값으로 넣을경우 \값\ 으로 해결할 수 있었다.
단순한 실수 이지만, 생각 이상으로 시간을 잡아먹었던 경우라 정리해 둔다.
'PHP' 카테고리의 다른 글
[PHP] JSON 데이터 화면에 출력하기 (0) | 2020.01.16 |
---|---|
[PHP] 배열인지 아닌지를 확인하는 is_array() 함수 (0) | 2019.02.21 |
[PHP] 변수 or 배열의 정보를 표기하는 함수 (0) | 2018.09.17 |
[PHP] mcrypt 방식 OpenSSL 방식으로 대체하기 (0) | 2018.08.30 |
cURL 연결 함수 (0) | 2018.08.30 |
[jQuery] jQuery Ajax 전송[jQuery] jQuery Ajax 전송
Posted at 2018. 9. 28. 16:40 | Posted in JavaScript & jQuery/jQuery#연관내용 : JavaScript AJAX 호출
■ jQuery Ajax 전송예제
-. jQuery Ajax는 비동기 통신을 구현해 주므로 실무에서 많이 사용한다.
-. 해당 포스팅은 무언가의 설명보다 필자가 자주 사용하는 형태를 정리하기위해 작성되었다.
# jQuery.Ajax( ) 메서드의 옵션
옵션 속성 이름 |
설명 |
자료형 |
async |
· 동기, 비동기를 지정한다. |
Boolean |
complete(jqXHR, textStatus) |
· Ajax 완료 이벤트 핸들러를 지정한다. |
Function |
data |
· 요청 매개변수를 지정한다. |
Object, String |
error(jqXHR, textStatus, errorThrown) |
· Ajax 실패 이벤트 핸들러를 지정한다. |
Function |
jsonp |
· JSONP 매개 변수 이름을 지정한다. |
String |
jsonpCallback |
· JSONP 콜백 함수 이름을 지정한다. |
String, Function |
success(data, textStatus, jqXHR) |
· Ajax 성공 이벤트 핸들러를 지정한다. |
Fuction, Array |
timeout |
· 만료 시간을 지정한다. |
Number |
type |
· 전송방식 'GET' 또는 'POST'를 지정한다. |
String |
url | · 대상 URL을 지정한다. | String |
# 소스코드① - AJAX 형식으로 데이터 전송
ajax_get.php |
<html> , async : false , data : { |
# 소스코드② - JSON 형태로 데이터를 출력
ajax_set.php |
<?php // $RetVal 라는 배열에 tbody 라는값을 새로 추가한다. $RetVal['tbody'] .= "<tr>"; print json_encode($RetVal); |
# 출력결과
'JavaScript & jQuery > jQuery' 카테고리의 다른 글
[jQuery] YouTube 영상 제어 (0) | 2018.10.26 |
---|---|
[jQuery] 퍼센트 게이지를 나타내는 Progress Bar (0) | 2018.10.25 |
[jQuery] data( ) 메서드를 통한 값 읽고. 쓰기 (0) | 2018.09.17 |
[jQuery] jQuery 셀렉터 정리 (0) | 2018.09.10 |
[jQuery] DatePicker 사용시 시작일 / 종료일 입력값 체크하기 (1) | 2018.08.20 |