홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송
urlencode(), base64 encode() 함수
7년 전

urlencode() / urldecode():
하나의 특수문자, 한글, multi-byte 문자를 %XX 형식으로 변환합니다. 길이가 좀 길어진다는게 단점입니다. 또한 [0-9a-zA-Z] 등은 encode 하지 않아 그대로 보인다는 단점(?) 도 있습니다.
보안성이 없거나 크게 요구되지 않는 경우나 일반적으로 많이 사용하는 방법이며, URL GET 방식으로 어떤 값을 넘길때도 많이 사용됩니다.



base64_encode() / base64_decode()
변환된 문자는 [0-9a-zA-Z+/=] 문자들로 구성되어지며 역시 약간 길이가 길어집니다.
쉽게 눈으로 판독(decode)할 수 없다는 장점(?)도 있습니다. 저수준의 보안성이 요구될때 사용하는 경우가 많습니다. URL GET 방식으로 어떤 값을 넘길때도 사용되지만 약간의 문제점이 있습니다.(+, / 문자 처리 문제, 아래 참고)



serialize() / unserialize()
이 함수는 어떤 특정 변수(variable)의 형태를 그대로 유지하면서 하나의 문자열로 변환합니다. 실제 본문의 문자열은 다른 형태로 변환되지 않으며, 다만 변수 형태를 유지하기 위해서 특정 형태의
문자열들이 붙습니다.
이 경우는 보통, 1차원 또는 다차원 배열을 하나의 문자열로 만들어 마치 하나의 문자열 변수처럼 취급하고자 할 경우에 많이 사용합니다. (쿠키나 세션 또는 파일저장 등에 많이 사용됨)
역시 URL GET 방식으로도 사용될 수 있지만 약간의 문제점이 있습니다.
(+, /, &, ?, # 등등 특수문자나 multi-byte 문자 처리 문제)



user_encode() / user_decode()
GET 방식등으로 어떤 값을 넘길 경우, 비교적 보안성이 요구될때 이런 사용자 정의 함수에 의해서 단방향이 아닌 쌍방향 함수를 이용하는 방법을 말합니다.
이때는 비밀키가 노출되면 안되겠죠...



이렇게 약간씩 그 쓰임새가 다르기 때문에 상황에 따라 적절한 방법을 선택하여 사용하면 됩니다.


*주의)
base64_encode() 로 변환된 문자열을 곧바로 GET 방식으로 넘기면 약간 문제점이 있습니다.


즉, '+' 문자와 '/' 문자인데, 값을 받을 때 '+'를 '+' 자체가 아닌 공백(%20)으로 인식하는 경우가 있습니다. (PHP 버전 문제아니면, 특이한 USER_AGENT 해석의 차이인듯)
(공백 ' '(%20)을 urlencode 하면 '+' 가 되죠)


따라서 '+' 를 다른 문자(?,/,#,&등은 절대 금물)나 문자열로 교체해줘야 합니다.
또한 '/' 문자도 디렉토리 구분이나 PATH_INFO 의 구분으로 인식할 수 있으므로 (PATH_INFO 로 구분하여 값을 받을 경우)역시 적절한 문자나 문자열로 교체해줘야 합니다.



*정리하면)
문자열(또는 특정 변수의 문자열 형태)을 URL GET 방식으로 넘길때 조심해야할 문자가 있습니다.
즉,
(공백), +, ?, #, &, / 등입니다.


(공백) : 이하를 해석하지 못하는 USER_AGENT 가 있을 수 있음
+ : 공백으로 해석 또는 인식되는 경우가 있음
? : 이하 쿼리로 인식됨
# : 이하 문자를 fragment 로 인식될 수 있음
& : 쿼리의 구분으로 인식될 수 있음
/ : PATH_INFO 로 구분한다면 하나의 path 로 인식되지 않음


이런 점만 주의한다면 어느 함수를 사용하든지 상관없겠죠(보안성 문제 제외).


이런 문자 처리를 자동(?)으로 처리해주는게 urlencode() 함수이며, 문자열 보안성은 결여되어 있습니다.


따라서, 이런 관점에서, 단독적인 base64_encode() 나 serialize() 함수는 URL GET 방식에 적합하지 않습니다.
추천추천 : 310 추천 목록
번호 제목
3,033
 PHP 정규식 정리
3,032
 PHP 정규식을 활용한 태그 및 특정 문자열 제거 및 추출 방법
3,031
 php 크롤링 또는 파싱 함수, 정규식 모음
3,030
 제이쿼리 기본 명령어
3,029
 웹페이지 가로 모드세로 모드 인식하기
3,028
 모바일 웹 화면 강제 회전(가로모드 고정)
3,027
 [HTML5]에서 frameset 대체 방법과 iframe 속성
3,026
 HTML <Audio> 사용법
3,025
 윈도우10 시스템파일 손상 (초간단 오류 복구방법!!)
3,024
 PHP 파일 존재 여부 파악하기(로컬 파일 존재 및 원격지 파일 존재)
3,023
 [CSS] 박스 세로 가운데 중앙 정렬 6가지
3,022
 CSS Layout 수평 & 수직 정렬
3,021
 여러 도메인들 간 쿠키 공유하기
3,020
 태그 사이에 있는 텍스트를 추출
3,019
 [JQuery] textbox focus on off일때 숫자 콤마 보여주기
3,018
 쿠키 생성,가져오기,삭제
3,017
 사용자 함수 모음
3,016
 마우스,키보드 제한 ( 오른쪽클릭,드래그,영역선택등..)
3,015
 [HTML5] <video> - DOM으로 제어하기
3,014
 HTML5 video 태그에서 영상 좌우반전
3,013
 PHP - 특정 태그 및 문자열 추출, 제거
3,012
 [PHP] define과 defined의 차이
3,011
 우클릭 완벽차단 스크립트
3,010
 iframe 높이 100% 맞추기
3,009
 curl 함수를 이용한 HTTP REFERER 변경
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.