php.ini 설정에서 register_globals = on/off 차이점과 기능설명

rester_globals 를 On 으로 하면 변수가 get, post, session 변수인지 체크하지 않아도 됩니다. 
쓰기에 따라서 보안적인 부분에 문제가 생길 수 있습니다
 

register_globals = on
가능 -> $_POST['u_id']
가능 -> $u_id
 
register_globals = off
가능 -> $_POST['u_id']
불가능 -> $u_id  
* extrract()로 처리하면 가능

php.ini에서 register_globals=off 일경우 헤더나 인클루드를 이용해서 상단에
@extract($_GET);
@extract($_POST);
@extract($_SERVER);
@extract($_FILES);
@extract($_ENV);
@extract($_COOKIE);
@extract($_SESSION);
 
위와 같이 처리해 주면 기존 소스를 그대로 사용할 수 있다.
혹은 받아오는 변수의 전체코드를 다 써주면 됨
$HTTP_GET_VARS[변수] 또는 $_GET[변수]
$HTTP_POST_VARS[변수] 또는 $_POST[변수]
$HTTP_COOKIE_VARS[변수] 또는 $_COOKIE[변수]
$HTTP_SESSION_VARS[변수] 또는 $_SESSION[변수]
$HTTP_POST_FILES[변수] 또는 $_POST_FILES[변수]



출처: http://gocoding.tistory.com/156 [Developer Factory]

'Works > PHP' 카테고리의 다른 글

리눅스 대량의 파일 지우기  (0) 2017.11.20
Dezend Encoder  (0) 2017.07.10
sqlsrv 함수로 mssql 접속하는 테스트페이지  (0) 2017.03.29
php 퍼미션 관련 함수  (0) 2016.10.25
PHP 문자열 함수  (0) 2016.06.30


## 설치 환경

- OS : CentOS 6
- 아파치 : httpd 2.4.25
- mod_url : 1.6.2.7 (최신버전인 1.8 버전은 컴파일 과정에서 에러남)

# 아파치 설치과정 : 본 블로그의 다른 게시물 참조

mod_url 설치를 위해서 최신 버전을 설치하려고 했으나 컴파일 에러 발생.
따라서 약간 버전이 낮은 것으로 컴파일 하여 설치 성공

[ Download & 소스 설치 ]  2186-mod_url-apache2-1.6.2.7.tar.bz2


# wget http://kldp.net/modurl/release/2186-mod_url-apache2-1.6.2.7.tar.bz2
# bzip2 -d 2186-mod_url-apache2-1.6.2.7.tar.bz2
# tar -xvf mod_url-apache2-1.6.27.tar

[ 컴파일 ]

# /usr/local/apache/bin/apxs -i -a -c mod_url.c

그러면 아파치 모듈 디렉토리 (/usr/local/apache/modules) 에 설치된다. (755 권한인지 확인)

-rwxr-xr-x 1 root root 13775  6월  5 18:24 mod_url.so

[ 환경 설정 ]

아파치 설정파일 httpd.conf 에 아래 부분이 이미 추가 되어 있다.

LoadModule redurl_module      modules/mod_url.so

그 하단에

<IfModule mod_url.c>
        CheckURL On
</IfModule>

부분만 추가시키고 아파치 웹 서버를 재구동 시킨다.


tcpdump 명령어 사용법



ㅁ 기본 옵션들


# tcpdump [ -AdDefIKlLnNOpqRStuUvxX ][ -B buffer_size ][ -c count ][ -C file_size ][ -G rotate_seconds ][ -F file ][ -i interface ][ -m module ][ -M secret ][ -r file ][ -s snaplen ][ -T type ][ -w file ][ -W filecount ][ -E spi@ipaddr algo:secret,... ][ -y datalinktype ][ -z postrotate-command ][ -Z user ]


ㅁ 각종 예제


# tcpdump -i eth0 => 인터페이스 eth0 을 보여줌

# tcpdump -w tcpdump.log => 결과를 파일로 저장, txt 가 아닌 bin 형식으로 저장됨

# tcpdump -r tcpdump.log => 저장한 파일을 읽음

# tcpdump -i eth0 -c 10 => 카운터 10개만 보여줌

# tcpdump -i eth0 tcp port 80 => tcp 80 포트로 통신하는 패킷 보여줌

# tcpdump -i eth0 tcp port 80 => tcp 80 포트로 통신하는 패킷 보여줌

# tcpdump -i eth0 src 192.168.0.1 => source ip 가 이것인 패킷 보여줌

# tcpdump -i eth0 dst 192.168.0.1 => dest ip 가 이것인 패킷 보여줌


* and 옵션으로 여러가지 조건의 조합 가능

# tcpdump -i eth0 src 192.168.0.1 and tcp port 80 => source ip 가 이것이면서 tcp port 80 인 패킷 보여줌


# tcpdump -i eth0 dst 192.168.0.1 => dest ip 가 이것인 패킷 보여줌

# tcpdump host 192.168.0.1 => host 를 지정하면, 이 ip 로 들어오거가 나가는 양방향 패킷 모두 보여줌

# tcpdump src 192.168.0.1 => host 중에서 src 가 이것인것 만 지정

# tcpdump dst 192.168.0.1 => host 중에서 dst 가 이것인것 만 지정

# tcpdump net 192.168.0.1/24 => CIDR 포맷으로 지정할 수 있다.

# tcpdump tcp => TCP 인것만

# tcpdump udp => UDP 인것만

# tcpdump port 3389 => 포트 양뱡항으로 이것인 것.

# tcpdump src port 3389 => src 포트가 이것인 것.

# tcpdump dst port 3389 => dst 포트가 이것인 것.


* combine : and ( && ) , or ( || ) , not ( ! ) 으로 여러가지를 조합해서 사용 가능

# tcpdump udp and src port 53 => UDP 이고 src 포트가 53 인 것

# tcpdump src x.x.x.x and not dst port 22 => src ip 가 x.x.x.x 이고 dst 포트가 22 가 아닌 것


* grouping : ( )

# tcpdump 'src x.x.x.x and ( dst port 3389 or 22 )' => src ip 가 x.x.x.x 이고 ( dst 포트가 3389 또는 22 ) 인 것  ==> 여기서는 ' ' 가 반드시 있어야 한다.

[출처] http://moyaria.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%97%90%EC%84%9C-tcpdump-%EB%AA%85%EB%A0%B9%EC%96%B4%EC%9D%98-%EC%98%B5%EC%85%98-%EC%A0%95%EB%A6%AC


1. UID 로 된 uid 를 다른 계정명과 그룹명으로 변경

find /home -uid UID -exec chown 계정명:그룹명 {} \;

ex) find /home/apple -uid 500 -exec chown apple:users {} \;

예제 해설) /home/apple 하위 경로에 있는 모든 파일 및 디렉토리에 대해서 uid 가 500 인 것을

uid : apple 과 gid : users 로 변경해라


2. 현재 경로의 모든 파일에 대해 내용검색을 하여 keyword 라는 패턴을 new_keyword로 치환

find ./ -exec perl -pi -e 's/keyword/new_keyword/g' {} \;

ex) find ./*.php -exec perl -pi -e 's/abc.com/abc.kr/g' {} \;

예제 해설) 현재 경로 (하위 포함) 의 모든 php 파일에 포함된 abc.com 이라는 패턴을 abc.kr 로 치환해라

3. 현재 경로에서만 소유자가 nobody인 php파일을 모두 삭제


find ./ -maxdepth 1  -user nobody -name "*.php" -exec rm {} \;

4. 특정날짜 기준으로 파일 찾기

4-1 특정 날짜 이후 생성된 파일 찾기
find ./ -type f -newerct yyyy-mm-dd

4-2 특정 날짜 이전에 생성된 파일 찾기
find ./ -type f !-newerct yyyy-mm-dd

위 두 명령어를 조합하여 일정 기간내에 생성된 파일을 찾을 수 있다.

ex) find ./ -type f -newerct 2020-01-01 ! -newerct 2020-01-31
(2020년 1월 1일 부터 1월 31일 이내에 생성된 파일을 출력)

응용) find ./ -type f -newerct 2020-01-01 ! -newerct 2020-01-31 -exec rm -rf {} \; 
(2020년 1월 1일 부터 1월 31일 이내에 생성된 파일 삭제)

5. 수정된 날짜/시간 기준으로 찾기

find ./ -type f -mtime +30 (30일 지난 파일)
find ./ -type f -mtime 30 (30일째 되는 파일)
find ./ -type f -mtime -30 (30일이 안되는 파일)
find ./ -type f -mmin +30 (30분 지난 파일)
find ./ -type f -mmin 30 (30분째 되는 파일)
find ./ -type f -mmin -30 (30분이 안되는 파일)

[기타] 명령어 응용을 위한 옵션 정리
-atime : access time
-ctime : create time
-mtime : modified time

-newerct : create time
-newermt : modified time
-newerat : access time


# vi /etc/default/useradd (또는 useradd -D로 출력가능)

# useradd defaults file
# 기본적으로 생성되는 신규사용자가 기본적으로 속해지는 그룹, 이 그룹은 useradd -g로 지정하는 로그인그룹(또는 이니셜그룹)을 의미하는 것이 아니라, useradd -G로 지정되는 부차적인 그룹(2차 그룹)을 의미한다. 기본값인 100은 GID를 의미하며, 신규로 생성되는 사용자는 GID가 100인 users 그룹에 속하게 된다. (신규로 생성되는 사용자는 이 설정에 따라 무조건 users 그룹을 2차그룹으로 가지게 된다) 하지만 배포판에 따라 이 설정이 무시되는 경우도 있음(-g, -G 등으로 직접 명시해야 속하는 경우)
GROUP=100

# 기본적으로 생성할 신규사용자의 홈디렉토리 생성의 위치를 결정한다. 기본값인 /home은 /home 아래에 신규유저의 이름으로 신규유저의 홈 디렉토리를 생성토록 한다. useradd -d로 임의의 위치를 지정할 수 있다.
HOME=/home

# 패스워드의 유효기간이 만료 후 계정이 비활성화 되기 까지의 기간(number of days). 0은 패쓰워드가 만료되면 바로 계정이 비활성화 되어 사용할 수 없게 한다. -1은 이 기능을 사용하지 않음. useradd -f로 임의의 값을 넣을 수 있다.
INACTIVE=-1

# 계정의 사용기간을 지정한다. 이 날짜가 지나면 계정으로 로그인이 불가능 하다. 입력형식은 YYYY-MM-DD이며 기본값인  blank는 계정의 만료일을 정하지 않음을 의미한다. useradd -e로 임의의 값을 넣을 수 있다.
EXPIRE=

# 기본적으로 사용할 쉘을 지정함. 사용할 수 있는 쉘의 목록은 /etc/shells에서 확인 가능하다. useradd -s 로 원하는 쉘을 선택할 수 있다.
SHELL=/bin/bash

# 기본적으로 복사해 올 환경설정 파일의 위치를 지정한다. 새로운 사용자가 생성되면 /etc/skel 에 있는 환경설정 파일을 복사해온다.(.bash_profile, .bashrc 등) useradd -m -k 로 임의의 환경설정을 복사해 올 수 있다.
SKEL=/etc/skel

useradd 명령을 옵션 없이 실행하였을 경우에 이 파일의 내용이 모두 그대로 적용이 된다. 하지만 useradd의 각 옵션들을 사용하면 이 옵션들이 우선 적용되어 이 파일의 내용은 무시된다.

-----------------------------------------------------------------------------------------------

# vi /etc/login.defs

# 패쓰워드의 유효기간을 정의. 패쓰워드를 변경하지 않고 로그인 할 수 있는 최대기간
PASS_MAX_DAYS 99999

# 패쓰워드 변경 후 재 변경까지 필요한 최소 날 수. 이 기간이 지정되면 패쓰워드 변경 후에 일정기간 동안에는 패쓰워드를 변경하지 못함. (You must wait longer to change your password)
PASS_MIN_DAYS 0

# 최소한 패쓰워드의 문자 수
PASS_MIN_LEN  5

# 패쓰워드 유효기한 전에 변경 알림 메세지를 출력하는 날의 수
PASS_WARN_AGE 7

# UID의 시작값
UID_MIN       500

# UID의 종료값
UID_MAX     60000

# GID의 시작값
GID_MIN       500

# GID의 종료값
GID_MAX     60000

# 생성되는 사용자의 홈 디렉토리의 퍼미션을 결정하는 UMASK 값
UMASK    066

(오직 홈 디렉토리 퍼미션만을 결정하는 UMASK 값이며, 로그인 후 적용되는 UMASK는 .bashrc에서 결정)

참고)

데비안 패키지 (우분투 등)에서는  adduser로 생성되는 계정의 홈 디렉토리의 퍼미션은  /etc/adduser.conf 에서  DIR_MODE에서 지정한 퍼미션으로 설정됩니다. 예를 들어  DIR_MODE=0700 으로 하면 700 퍼미션으로 신규 사용자의 홈디렉토리가 생성이 되지요.
하지만 래드햇 계열에서는 adduser도 /etc/login.defs파일을 참조합니다.

즉 데비안 패키지에서 생성되는 홈 디렉토리의 퍼미션은
* useradd로 사용자를 생성할 경우 /etc/login.defs에서 UMASK 값 으로 사용자의 홈 디렉토리의 퍼미션이 결정됩니다.
* adduser로 사용자를 생성할 경우 /etc/adduser.conf에서 DIR_MODE=퍼미션 으로 사용자의 홈 디렉토리의 퍼미션이 결정됩니다.

-----------------------------------------------------------------------------------------------

# vi /etc/passwd
사용자명 : useradd [name] / usermod -l new_name [name]
password : pwconv --> /etc/shadow
UID : useradd -u / usermod -u
GID : useradd -g / usermod -g
comments : useradd -c / usermod -c 등으로 부가정보를 추가하면 여기에 기록됨
홈디렉토리 : /etc/default/useradd 의 HOME 또는 useradd -d / usermod -d
로그인 쉘 : /etc/default/useradd 의 SHELL 또는 useradd -s / usermod -s

ruset : x : 512 : 512 : : /home/ruset : /bin/bash

# vi /etc/shadow
사용자명 : useradd [name] / usermod -l new_name [name]
암호화된 password (by md5) : passwd [name]
변경일 수 count (from 1970.1.1) : passwd를 실행한 일을 1970년 1월 1일로 부터 몇 일이 경과 되었는지 나타냄.
PASS_MIN_DAYS : /etc/login.defs 에서 정의
PASS_MAX_DAYS : /etc/login.defs 에서 정의
PASS_WARN_AGE : /etc/login.defs 에서 정의
INACTIVE : /etc/default/useradd 의 INACTIVE 또는 useradd -f / usermod -f / chage -I
EXPIRE : /etc/default/useradd 의 EXPIRE 또는 useradd -e / usermod -e
Reserved : 예약공간

ruset : $1$liU69g8r$L3q1Rr3XcZ58E8RX4RHeS1 : 13616 : 0 : 99999 : 7 : : :

-----------------------------------------------------------------------------------------------

# useradd
-u : uid 지정
-g : 로그인 그룹(이니셜 그룹)의 gid 또는 그룹명을 지정 (1개의 그룹만 지정가능)
-G : 부가그룹 (2차그룹)의 GID 또는 그룹명을 지정 (다수의 그룹을 지정가능)
-e : 계정의 사용기한을 지정(이 날이 지나면 로그인 불가)
-f : 패스워드가 만료된 후에 계정이 비활성화되기까지의 기간을 설정한다. 0은 패스워드 만료 후에 바로 계정이 비활성화 된다. (-1은 이 기능을 사용치 않음)
-m -k :   -m 옵션은 신규유저의 홈 디렉토리가 존재하지 않는다면 사용자의 홈을 생성하고, -k 옵션으로 지정한 디렉토리내의 파일들을 신규유저의 홈 디렉토리로 복사한다. (만약  -k 옵션을 생략시 자동적으로 /etc/skel에 있는 파일을 복사한다) -k 옵션은 -m과 함께만 사용할 수 있다. (-k 옵션은 단독으로 사용이 불가능)
-d : 사용자의 홈 디렉토리를 지정함.
-s : 사용자의 로그인 쉘을 지정
-o : 이미 존재하는 UID와 GID를 갖게 함. (duplicate (non-unique) UID)
-p : 패스워드를 지정



출처: http://psman2.tistory.com/entry/useradd와-여러가지-설정들 [R.U Ready?]