|
|
Mobile 2008/06/27 19:18
개체식별번호란? 보통 가전제폼을 보면 시리얼 넘버가 붙어 있는걸 볼 수 있다. 각각의 휴대폰을 구별하는 이러한 시리얼 넘버를 개체식별번호(個体識別情報)라 한다.(공식명칭은 아니지만 일반적으로 쓰이는 이름임)
이 개체식별번호에도 기기고유번호와 개인고유번호의 두가지 종류가 있다. 기기고유번호는 사용자가 휴대폰을 바꾸거나 해도 변하지 않는 기기의 고유번호를 말한다. 즉 내 휴대폰을 다른사람한테 빌려주어도 기기가 가지고 있는 번호는 변하지 않고 그대로 이어진다.
개인고유번호는 통신사와 계약한 각각의 개인에게 부여된 번호이다. 휴대폰을 바꾸어도 이 번호는 변하지 않는다고 보면 된다.
보안상의 문제를 생각하면 개인의 식별을 위해서는 이 개인고유번호를 이용하는것이 안전하다.
휴대폰으로 어떤 사이트를 이용시 인증방법으로 일반적으로 아이디 , 패스워드를 사용한다. 그런데 매번 아이디와 패스워드를 입력하는것도 무지귀찮다. 쿠키를 사용해서 자동으로 로그인 할 수 있다면 좋겠지만 일본휴대폰은 쿠키를 사용할 수 없다. (일부는 사용가능하지만...)
개별식별번호 취득방법.
- 도코모(DOCOMO : ドコモ)
- 유저에이전트에서 구하는 방법
- MOVA 는 11 줄 , FOMA 는 15줄로 구성됨
- icc 는 FOMA 카드 제조번호임
- 디폴트설정으로는 표시되지않음
- 링크나 폼등에 utn 문자를 넣어야 구할 수 있음.
<a href="`test.php" utn>test</a> <form method="post" utn> </form>
- 휴대폰으로 *#06# 이라고 치면 이 값을 구할 수 있다. (기종에 따라 다름.
- NULLGWDOCOMO 를 사용하는 방법
URL 에 uid=NULLGWDOCOMO 를 추가하는 방법으로 취득할 수 있다. 링크에 위 uid=NULLGWDOCOMO 를 추가하면 자동적으로 NULLGWDOCOMO 부분이 유저 고유번호로 바뀐다.
- i모드 id (guid)
- au
- PHP 의 경우
$uid = $_SERVER['HTTP_X_UP_SUBNO']; 로 구함
- 소프트뱅크
- 유저에이전트를 사용하는 방법
Vodafone/1.0/V904SH/SHJ001/SNxxxxxxxxxxxx xxxxxxxxxxxx 부분이 기기고유번호이다. 유저가 유저ID 통지설정을 오프로 해놓으면 취득할 수 없다.
- 헤더의 x-jphone-uid 정보로 구하는 방법
PHP 의 경우 $uid = $_SERVER['HTTP_X_JPHONE_UID']; 로 구하는 방법이 있다.
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/145
PHP/매뉴얼 번역 2008/06/27 15:52
http://doc.a4box.com/php/function.parse-url.html
여기에 번역페이지....
parse_url
parse_url URL 을 파싱하여(해석) 구성요소를 리턴한다.
설명
mixed parse_url ( string $url [, int $component ] )
이 함수는 URL 의 여러 구성요소들을 연상배열로 리턴한다.
지정 URL 이 유효한지를 체크하는 함수가 아니라 단순히 URL 을 요소별로 분해할뿐이다. 불완전한 URL 이더라도 값을 받아들이며 parse_url() 값을 해석할 수 있는 부분까지는 파싱한다.
파라미터
url
파싱할 URL
component
PHP_URL_SCHEME , PHP_URL_HOST ,PHP_URL_PORT , PHP_URL_USER、PHP_URL_PASS , PHP_URL_PATH ,PHP_URL_QUERY 또는 PHP_URL_FRAGMENT 중 하나를 지정하여 특정 URL 컴포넌트만을 문자열로 구하도록한다.
리턴값
제대로된 형식이 아닌 URL 에 대해서는 parse_url() 는 FALSE 를 리턴하고 E_WARNING 를 발생한다. 그 외에는 배열을 리턴하며 키값으로 다음 요소들이 담겨진다.
- scheme - 예: http
- host
- port
- user
- pass
- path
- query - 물음표? 이후
- fragment - 샾마크 # 이후
component 가 지정되어 있는 경우 문자열로 리턴.
<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
?>
Array
(
[scheme] => http
[host] => hostname
[user] => username
[pass] => password
[path] => /path
[query] => arg=value
[fragment] => anchor
)
주의 : 상대 URL 에서는 동작안함.
주의 : parse_url() 은 URL 을 파싱하기위한 함수지 URI 을 파싱하기위한 함수가 아니다. 그러나 PHP 의 상위버젼과의 호환성을 위해 예외적으로 file:// 스킴에 대해서 3 중 슬래쉬 (file:///...) 도 사용할 수 있다. 다른 스킴에서는 사용할 수 없는 형식이다.
참고 함수
pathinfo 함수
dirname()
basename()
parse_url 함수
realpath()
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/143
PHP/매뉴얼 번역 2008/06/27 15:33
pathinfo
pathinfo 파일 패스에 관한 정보를 리턴.
설명
mixed pathinfo ( string $path [, int $options ] ) pathinfo() 는 path 에 관한 정보를 담고 있는 associative array (조합배열 , 연상배열 정도...? )을 리턴한다.
파라미터
- path
-
구하려는 패스
- options
-
어떤 요소를 리턴할지를 옵션 파라미터 options 으로 지정. PATHINFO_DIRNAME , PATHINFO_BASENAME , PATHINFO_EXTENSION 및 PATHINFO_FILENAME 의 조합으로 이루어짐. 디폴트는 모든 요소를 리턴한다.
리턴값 다음의 키를 가지고 있는 associative array 을 리턴한다. dirname (디렉토리명 ) , basename (파일명 ) , 값이 존재할경우 extension (확장자).
options 을 사용하면 모든 요소를 선택하지 않는 한 리턴값은 문자열이 된다.
변경이력 5.2.0 상수 PATHINFO_FILENAME가 추가됨.
<?php $path_parts = pathinfo('/www/htdocs/index.html');
echo $path_parts['dirname'], "\n"; echo $path_parts['basename'], "\n"; echo $path_parts['extension'], "\n"; echo $path_parts['filename'], "\n"; // PHP 5.2.0 이후 ?>
출력결과
/www/htdocs index.html html index
2008.06.27 현재 http://docs.php.net/manual/kr/function.pathinfo.php 의 매뉴얼번역이 안되어있음.
참고 함수 dirname() basename() parse_url 함수realpath()
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/142
PHP/매뉴얼 번역 2008/06/27 00:47
이 함수도 아직 번역이 안되어 있어서... header — 가공하지않은 HTTP 헤더를 송신한다.
설명 : void header ( string $string [, bool $replace [, int $http_response_code ]] )
header() 함수는 일반적인 HTML 태그 및 PHP 와는 상관없이 모든 실제 출력하기전에 콜되어야 한다. 자주 일어나는 에러로 include() 또는 require() 함수 다른 파일에 억세스하는 함수에 공백 , 빈줄이 들어가 header() 앞에서 출력이 발생하는 경우이다. 같은 에러로 단일 PHP/HTML 파일을 사용할때도 일어난다.
<html> <?php /* header() 를 콜하기전에 출력이 있기에 에러가 발생함 * */ header('Location: http://www.example.com/'); ?> 파라미터 : string
헤더 문자열 특수한 header 콜이 2종류있다. 먼저 문자열 "HTTP/" 로 시작하는 모든 헤더이다.(대문자. 소문자 구분없음) 이 헤더는 송신하는 HTTP 스테이터스코드를 표시하기 위해 사용된다. 예를 들어 존재하지 않는 파일에의 리퀘스트를 처리하기 위하여 PHP 스크립트를 사용하도록(ErrorDocument 디렉티브에 의해) Apache 를 설정할때 해당 스크립트가 알맞은 스테이터스 코드를 돌려주도록해야한다.
<?php header("HTTP/1.0 404 Not Found"); ?>
2번째 특별한 헤더는 "Location:" 헤더이다. 이 헤더는 브라우저를 리다이렉트하며 , 브라우저에게 REDIRECT (302) 스테이터스코드를 돌려준다. (3xx 스테이터스 코드가 이미 송신되어 있지않는 경우만)
<?php header("Location: http://www.example.com/"); /* 브라우저를 리다이렉트*/
/* 리다이렉트후 , 이 밑으로는 실행 안됨.*/ exit; ?>
replace
옵션의 파라미터 replace 는 헤더가 이전에 송신된 비슷한 헤더를 바꿀지 또는 같은 형식의 두번째 헤더를 추가할지를 지정한다. 디폴트로 변경하도록하지만 두번째 파라미터가 FALSE 인 경우 같은 타입의 복수 헤더를 강제적으로 생성한다.
<?php header('WWW-Authenticate: Negotiate'); header('WWW-Authenticate: NTLM', false); ?>
http_response_code
HTTP 리스폰스코드를 강제적으로 지정한다.
리턴 : 리턴하지 않음.
예 1 다운로드 다이얼로그PDF 파일을 생성한 경우 해당 파일을 다운로드할지를 확인하는 대화창을 표시하고 싶을것이다. 그런 경우 » Content-Disposition 헤더를 사용하여 파일명을 지정하면 브라우저에서 대화창을 표시할 수 있다.
<?php // PDF 출력 header('Content-type: application/pdf');
// downloaded.pdf 라는 이름으로 저장 header('Content-Disposition: attachment; filename="downloaded.pdf"');
// 원래 PDF 소스는 original.pdf readfile('original.pdf'); ?>
예2 캐쉬디렉티브
PHP 스크립트는 자주 동적 HTML 를 생성하기에 클라이언트 브라우저, 서버 및 클라이언트 브라우저 사이에서 프락시가 캐쉬를 행하거나 해서는 안된다. 많은 프락시와 클라이언트에서는 다음 코드에 의해 강제적으로 캐쉬를 무효화할 수 있다.
<?php header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // 과거 날짜 ?>
주의 : 위 헤더를 전부다 출력하지않더라도 페이지의 캐쉬가 일어나지 않는 경우가 있다. 디폴트 브라우저의 캐쉬동작을 사용자가 변경할 수 있는 방법은 몇가지가 있다. 위 헤더를 송신함으로 해서 스크립트의 출력이 캐쉬될 가능 성이 있는 설정을 덮어 쓰도록... 또한 session_cache_limiter() 및 설정 session.cache_limiter 를 이용하면 세션이 사용되었을때 캐쉬관계의 제대로된 헤더를 자동적으로 생성하도록 할 수 있다.
주의 : PHP 4 에서는 출력버퍼링을 사용하여 이 문제를 해결할 수 있다. 이 경우 브라우저에의 출력이 송신되기까지 서버에 전부 버퍼링되는 오버헤드가 있다. 출력 버퍼링은 ob_start() 와 ob_end_flush() 를 스크립트에서 콜하거나 php.ini , 서버 설정 파일의 설정 디렉티브 utput_buffering 을 설정하여 사용할 수 있다.
주의 : 실제로 header() 가 맨 처음에 콜되었는지와 상관없이 HTTP 스테이터스 헤더행은 클라이언트에게 항상 맨처음에 송신된다. HTTP 헤더가 이미 송신되어 있지않는한 header() 를 콜하여 스테이터스는 항상 덮어쓰게된다.
주의 : Microsoft Internet Explorer 4.01 에 버그가 있어서 이방법은 동작하지 않음 . 해결방법은 없다. 마찬가지로 Microsoft Internet Explorer 5.5 에서도 버그가 존재한다. 서비스팩 2 이후부터는 버그가 해결됨.
주의 : 세이프 모드가 유효한 경우는 WWW-Authenticate 헤더 (HTTP 인증에 사용) 을 설정했을때 스크립트의 uid가 realm 에 추가된다.
주의 : HTTP/1.1 에서는 스키마 , 호스트명 절대 패스를 포함한 절대 URI 가 » Location: 의 파라미터로서 필요하지만 상대 URI 를 받느 클라이언트도 있다. 일반적으로 상대 URI 로 절대 URI 를 생성하기위해서는 $_SERVER['HTTP_HOST'] , $_SERVER['PHP_SELF'] 및 dirname() 를 사용.
<?php /* 현재 디렉토리의 다른 페이지로 리다이렉트 */ $host = $_SERVER['HTTP_HOST']; $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); $extra = 'mypage.php'; header("Location: http://$host$uri/$extra"); exit; ?>
주의 : session.use_trans_sid 가 유효라도 세션 ID 가 Location 헤더와 같이 넘겨지는 일은 없다. SID 정수를 사용하여 수동으로 넘겨줘야 한다.
원문링크: http://docs.php.net/manual/en/function.header.php
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/141
雑談 2008/06/26 00:50
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/139
雑談 2008/06/25 13:56
40평대 아파트 살던 '중산층' 최씨의 몰락 정혜전 기자 cooljjun@chosun.com
아주 디질때까지 노무현 탓해라 씨발넘들아... 어디가서 좆선에 다닌다고 내세울 자신 있어?
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/137
PHP/매뉴얼 번역 2008/06/25 12:44
PHP 세션 - 세션 , 보안
세션 모듈은 세션에 저장한 정보를 볼 수 있는 것은 세션을 작성한 유저만 가능하도록 하는것은 불가능하다. 세션의 안전성을 적극적으로 지키기위해서는 세션과 연결된 값에 추가적을 작업을 하여야 한다.
세션에 넣을 데이터의 중요성을 평가하여 필요한 보호책을 생각하여야 한다. 이 대책은 보통 어떤 희생이 필요하기에 사용자의 편리성을 떨어트리기도 한다. 예를 들어 단순한 소셜엔지니어링으로부터 유저를 지키기 위해서는 session.use_only_cookies 을 유효화 해야 한다. 이 경우 유저측에서 쿠키가 항상 유효화되어 있어야하며 무효화되어 있는경우 세션을 사용할 수 없다.
세션 ID 가 다른 사람에게 알려질 방법에는 몇가지가 있다. 다른 사람에게 넘겨진 세션 ID 로 제 3 자가 특정 ID 와 관련된 모든 리소스에 억세스할 수 있게 된다. 세션 ID 가 URL 로 전송되는 경우 외부사이트에 링크를 달고 있는 경우 외부 사이트의 referrer 로그에 세션 ID 를 담고 있는 URL 이 보존될 가능성이 있다. 두번째로 맘먹고 공격하려는 공격자가 네트워크의 트래픽을 모니터하고 있을 가능성이 있다. 세션 ID가 암호화되어 있지않는경우 세션 ID 는 네트워크상에서 일반 텍스트로 보내진다. 해결책은 서버상에 SSL 을 구축하여 유저에게 SSL 를 반드시 사용하도록한다. 원문링크 : http://jp.php.net/manual/en/session.security.php목차로 [PHP/매뉴얼 번역] - PHP 세션
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/134
PHP/매뉴얼 번역 2008/06/25 12:44
PHP 세션 - 예
세션ID 전달
세션 ID 를 통지하기 위해서는 다음의 두가지 방법이 있다.
session 모듈은 위 두가지방법을 지원한다. Cookie 가 최적이지만 (클라이언트가 쿠키를 사용할 수 없는 경우가 있기에 ) 신뢰성이 없어 쿠키에만 의존할 수 없다. 2번째의 방법은 세션ID 를 직접 URL 에 포함시키는것이다.
PHP 에는 자동적으로 링크를 바꾸는 기능이 있다. PHP 4.2.0 이후를 사용하고 있지 않는 경우 PHP 구축시에 이 기능을 유효화 시켜야 한다. UNIX 환경에서는 --enable-trans-sid를 configure 에 지정할것. 이 옵션과 실행시의 옵션 session.use_trans_sid 가 유효한 경우 상대 URI 은 자동적으로 세션 ID 를 포함하게 된다.
주의 : arg_separator.output php.ini 디렉티브에 따라 파라미터 구분자 를 커스터마이즈 할 수 있다. XHTML을 제대로 따르기위해서는 여기에 & 를 지정할 것 또는 세션이 시작된 경우 정의된 정수 SID 를 사용할 수도 있다. 클라이언트가 적당한 세션 쿠키를 송신하지 않은 경우 이 정수는 session_name=session_id 의 형식이 된다. 송신된 경우에는 빈 문자열이된다. 따라서 무조건적으로 URL 에 넣을 수 있다. 다음 예는 변수의 등록방법 및 SID 를 이용하여 다른 페이지로의 링크를 하는 방법
<?php
session_start();
if (empty($_SESSION['count'])) { $_SESSION['count'] = 1; } else { $_SESSION['count']++; } ?>
<p> Hello visitor, you have seen this page <?php echo $_SESSION['count']; ?> times. </p>
<p> To continue, <a href="nextpage.php?<?php echo htmlspecialchars(SID); ?>">click here</a>. </p>
XSS 와 관련된 공격을 막기위해 SID 를 출력할때 htmlspecialchars()를 사용한다.
PHP를 컴파일할때 --enable-trans-sid 를 사용한 경우 위 예처럼 SID 를 출력할 필요가 없다.
주의 : 상대URL 이 아닌 URL 은 외부사이트를 가리킨다고 가정하여 SID 가 추가되지 않는다. SID 를 외부 서버로 넘겨주는것이 보안상 리스크가 생기기 때문이다. 커스텀 세션 핸들러세션 정보를 데이터베이스에 보존하거나 다른 보존방법을 구현하기위해서는 커스터마이즈된 보존 함수를 작성하여 session_set_save_handler() 를 사용해야 한다.
주의 : PHP 4.1.0 이후 $_SESSION 은 $_POST , $_GET , $_REQUEST 처럼 글로벌 변수로 사용가능해졌다. $HTTP_SESSION_VARS 와 달리 $_SESSION 은 항상 글로벌이다. global 은 $_SESSION 에게는 필요 없음. $_SESSION 을 사용하기 전에 session_start() 를 사용하여 세션을 개시하여야 한다는 사실에 주의할 것. $_SESSION 의 키는 PHP 의 통상 변수명과 마찬가지로 제한이 있다. 즉 숫자로 시작할 수 없으며 문자 또는 언더스코어로 시작해야한다.
register_globals 가 무효인 경우 글로벌 배열 $_SESSION 의 멤버만 세션 변수로서 등록된다. 리스토어된 세션 변수는 배열 $_SESSION 에서만 사용할 수 있다.
보안과 코드의 가독성을 위하여 $_SESSION (또는 PHP 4.0.6 이전에서는 $HTTP_SESSION_VARS) 을 사용할 것을 권장하고있다. $_SESSION 의 경우 session_register(), session_unregister(), session_is_registered() 는 불필요. 사용자는 통상의 변수와 같이 세션 변수에 억세스 할 수 있다. 세션에서 변수 등록
<?php session_start(); // Use $HTTP_SESSION_VARS with PHP 4.0.6 or less if (!isset($_SESSION['count'])) { $_SESSION['count'] = 0; } else { $_SESSION['count']++; } ?>
register_globals 가 무효한 경우 $_SESSION 에 등록된 변수의 등록이 해제됨
<?php session_start(); // Use $HTTP_SESSION_VARS with PHP 4.0.6 or less unset($_SESSION['count']); ?>
경고
unset($_SESSION) 로 모든 $_SESSION 을 초기화해서는 안됨. $_SESSION 수퍼글로벌 변수를 이용한 세션 변수의 등록이 불가능해지기 때문이다.
경고
세션 변수에서는 참조를 사용할 수 없다. 다른 변수에의 참조를 리스토어 할 방법이 없기때문이다. register_globals 가 유효한 경우 모든 글로벌 변수는 세션 변수로서 등록할 수 있고 세션 변수는 대응하는 글로벌 변수로서 리스토어 할 수 있다. PHP 는 어떤 글로벌 변수가 세션 변수로서 등록되는지를 알아야 하기에 사용자는 변수를 session_register() 함수로 등록해야 한다. 그러나 $_SESSION 의 경우 엔트리를 설정하여 함수등록과 같은 기능을 한다.
경고
PHP 4.3.0 이전 버젼에서는 $_SESSION 을 사용하여 register_globals 을 무효화하는 경우 session_register() , session_is_registered() , session_unregister() 을 사용하지않도록... 보안상 , 그리고 성능면에서 register_globals 을 무효화 하는 쪽을 권장함.
register_globals 가 유효한 경우 글로벌 변수와 $_SESSION 의 엔트리는 이전의 세션 인스턴스에서 등록된 세션 변수의 같은 값을 참조하게 된다. 그러나 변수가 $_SESSION 에서 등록된 경우 글로벌 변수가 사용가능하도록 되는것은 다음 리퀘스트 이후가 된다.
PHP 4.2.3 와 그 이전버젼에서만 일어나는 트러블중에 session_register() 로 새 세션 변수를 등록할 경우 글로벌 스코프의 엔트리와 $_SESSION 의 엔트리는 다음 session_start() 까지 같은 값에의 참조는 되지 않는다. 즉 , 글로벌 변수의 수정은 $_SESSION 의 엔트리에는 반영되지 않는다. PHP 4.3.0 에서는 수정되었음.
원문링크 : http://www.php.net/manual/en/session.examples.php
목차로 [PHP/매뉴얼 번역] - PHP 세션
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/133
PHP/매뉴얼 번역 2008/06/25 12:43
PHP 세션 - 기정의 정수
다음의 정수가 정의 되어 있으며 이확장 모듈이 PHP 내장으로 컴파이되어 있거나 , 런타임시(실행시)에 동적으로 로드되어 있는 경우 사용가능하다.
- SID (string)
- "name=ID" 형식으로 세션명과 세션ID를 담고 있는 정수. 세션 ID 가 세션쿠키에 적절하게 세트되어 있는 경우에는 빈문자가 들어간다.
원문링크 : http://www.php.net/manual/en/session.constants.php목차로 [PHP/매뉴얼 번역] - PHP 세션
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/132
PHP/매뉴얼 번역 2008/06/25 12:28
PHP 세션 - 인스톨 / 설정외부라이브러리 필요없음.
PHP의 세션기능은 디폴트로 유효화 되어있다. 세션 기능을 무효화해서 PHP 를 구축하고 싶으면 configure 에 옵션 --disable-session 를 지정해야한다. 세션 기억영역으로 공유메모리(mm) 를 사용하려면 PHP 의 configure 에 --with-mm[=DIR] 를 지정한다.
Windows 버젼의 PHP 에는 이 확장모듈이 내장되어있다. 함수를 사용하기위해서는 확장모듈을 추가 로드할 필요는 없다.
PHP 세션 - 실행시 설정 (런타임 설정) php.ini 의 설정에 따라 동작이 바뀐다.
세션 설정 옵션
| 이름 |
디폴트 |
변경가능여부 |
변경이력 |
| session.save_path |
"" |
PHP_INI_ALL |
|
| session.name |
"PHPSESSID" |
PHP_INI_ALL |
|
| session.save_handler |
"files" |
PHP_INI_ALL |
|
| session.auto_start |
"0" |
PHP_INI_ALL |
|
| session.gc_probability |
"1" |
PHP_INI_ALL |
|
| session.gc_divisor |
"100" |
PHP_INI_ALL |
PHP 4.3.2 부터 |
| session.gc_maxlifetime |
"1440" |
PHP_INI_ALL |
|
| session.serialize_handler |
"php" |
PHP_INI_ALL |
|
| session.cookie_lifetime |
"0" |
PHP_INI_ALL |
|
| session.cookie_path |
"/" |
PHP_INI_ALL |
|
| session.cookie_domain |
"" |
PHP_INI_ALL |
|
| session.cookie_secure |
"" |
PHP_INI_ALL |
PHP 4.0.4 부터 |
| session.cookie_httponly |
"" |
PHP_INI_ALL |
PHP 5.2.0 부터 |
| session.use_cookies |
"1" |
PHP_INI_ALL |
|
| session.use_only_cookies |
"1" |
PHP_INI_ALL |
PHP 4.3.0 부터 |
| session.referer_check |
"" |
PHP_INI_ALL |
|
| session.entropy_file |
"" |
PHP_INI_ALL |
|
| session.entropy_length |
"0" |
PHP_INI_ALL |
|
| session.cache_limiter |
"nocache" |
PHP_INI_ALL |
|
| session.cache_expire |
"180" |
PHP_INI_ALL |
|
| session.use_trans_sid |
"0" |
PHP_INI_ALL |
PHP_INI_ALL 은 PHP <= 4.2.3 , PHP_INI_PERDIR 은 PHP < 5 부터. PHP 4.0.3 부터 |
| session.bug_compat_42 |
"1" |
PHP_INI_ALL |
PHP 4.3.0 부터. PHP 6.0.0 에서 삭제 |
| session.bug_compat_warn |
"1" |
PHP_INI_ALL |
PHP 4.3.0 부터. PHP 6.0.0 에서 삭제 |
| session.hash_function |
"0" |
PHP_INI_ALL |
PHP 5.0.0 부터 |
| session.hash_bits_per_character |
"4" |
PHP_INI_ALL |
PHP 5.0.0 부터 |
| url_rewriter.tags |
"a=href,area=href, frame=src,form=,fieldset=" |
PHP_INI_ALL |
PHP 4.0.4 부터 | PHP_INI_* 정수의 설명 및 정의에 대해서는 php.ini 디렉티브 를 참조.
세션 관리 시스템은 php.ini파일에 기술 가능한 많은 설정옵션을 지원한다.
session.save_handler string
- session.save_handler 는 세션에 관련되는 데이터의 보존 및 값을 구할때 사용하는 핸들러를 정의한다. 디폴트는 files . 각 확장모듈에서 독자 save_handler 를 사용할 수 있다. 인스톨 환경단위에서 등록되어 있는 핸들러를 구하려면 phpinfo() 를 사용. session_set_save_handler() 참조
- session.save_path string
- session.save_path 는 보존 핸들러에 넘겨주는 파라미터를 정의. 디폴트의 파일 핸들러를 선택한 경우 파일이 작성되는 곳의 패스가 넘겨진다. session_save_path() 참조
옵션의 파라미터로서 N(수치)를 지정할 수 있다. 세션파일을 분산해서 보존할때 디렉토리 계층레벨을 결정한다. 예를들어 '5;/tmp' 로 /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If 라는 위치에 세션파일을 생성한다. N 을 사용하려면 관련 디렉토리가 사전에 작성되어 있어야 한다. 이를 위해 ext/session 에 mod_files.sh 라는 스크립트 파일이 존재한다. 또한 0 이상의 N 이 지정되어 있는 경우에는 자동 가비지콜렉션이 작동하지않는 사실에 주의할것. 자세한 내용은 php.ini 을 볼것. 또한 N 을 지정하는 경우 session.save_path 를 "quotes" 로 둘러싸야한다. 왜냐하면 구분자(;) 는 php.ini 에서는 코멘트로 이용되고 있기때문이다.
경고
이 설정을 /tmp (디폴트) 처럼 어디에서도 읽어들일수 있는 디렉토리하고 있는 경우 , 서버상의 다른 유저가 이 디렉토리의 파일파일 리스트를 읽어들일 수 있기에 세션을 하이잭할 수 있다.
주의: PHP 4.3.6 이전에서는 Windows 유저가 PHP 의 session 함수를 사용하기위해서는 이 변수를 변경해야한다. c:/temp 같이 유효한 패스를 지정할 것.
- session.name string
- session.name 은 세션명을 지정하여 쿠키명으로서 사용된다. 알파벳 문자만 지정해야한다. 디폴트는 PHPSESSID 이다. session_name() 참조
session.auto_start boolean
session.auto_start 는 리퀘스트를 개시할때 세션모듈이 세션을 자동적으로 개시할지 여부를 지정한다. 디폴트는 0 (무효).
session.serialize_handler string
session.serialize_handler 는 시리얼라이즈 또는 시리얼라이즈된 데이터를 복원하기위해 사용되는 핸들러의 이름을 지정한다. 현재 ( php 또는 php_binary 라는 이름의 ) PHP 내부 포맷 및 (wddx 라는 이름의 ) WDDX 가 서포트되고 있다. WDDX 는 PHP 가 WDDX 서포트 를 유효화 하여 컴파일 되어 있는 경우에만 사용가능하다. 디폴트는 php
session.gc_probability integer
session.gc_probability 와 session.gc_divisor 의 조합으로 gc (가비지콜렉션)루틴의 기동을 제어한다. 디폴트는 1 . session.gc_divisor 참조
session.gc_divisor integer
session.gc_divisor 와 session.gc_probability 의 조합으로 모든 세션의 초기화과정에서 gc(가비지콜렉션 )프로세스도 기동할 확률을 제어한다. 확률은 gc_probability/gc_divisor 으로 계산된다. 예를 들어 1/100 은 각 리퀘스트마다 1% 의 확률로 GC 프로세스가 기동한다. session.gc_divisor 의 디폴트 값은 100 이다.
session.gc_maxlifetime integer
session.gc_maxlifetime 은 데이터가 '쓰레기' 로 여겨져 소거될때까지의 초수를 지정한다. 가비지 콜렉션 (쓰레기의 수집) 은 세션개시할때 일어남.
주의 : 다른 값을 session.gc_maxlifetime 에 지정하고 있는 또 다른 스크립트가 세션데이터의 보존장소를 공유하고 있는 경우 , 가장 작은 설정치에 도달한 시점에서 데이터가 소거된다. 이런 경우에는 서로 session.save_path 를 사용한다.
주의 : 디폴트의 파일을 베이스로 세션핸들러를 사용하고 있는 경우 사용하는 파일시스템은 억세스 시간(atime) 을 기록할 수 있어야한다. Windows FAT 는 이게 불가능하기에 FAT 파일 시스템 또는 atime 의 기록이 불가능한 다른 파일 시스템에서 문제가 발생한경우 세션의 가비지콜렉션처리를 위해 다른 방법을 준비해야한다. PHP4.2.3 이후 atime 대신에 mtime(갱신시간)이 사용된다. atime 를 사용할 수 없는 파일시스템의 문제가 사라짐.
- session.referer_check string
session.referer_check 에는 HTTP Referer 체크를 위한 문자열을 지정한다. Referer 가 클라이언트에 의해 송신되고 지정한 문자열이 없는 경우 세션 ID 는 무효화됨. 디폴트는 빈 문자열.
session.entropy_file string
session.entropy_file 는 세션ID를 작성할때의 추가 엔트로피 소스 로 사용되는 외부 리소스에의 패스를 지정한다. 예를 들어 많은 UNIX 에서 이용가능한 /dev/random 또는 /dev/urandom 가 있다.
session.entropy_length integer
session.entropy_length 는 바로 위에서 지정한 파일로부터 읽어들이는 바이트 수를 지정한다. 디폴트는 0 (무효)
session.use_cookies boolean
session.use_cookies 에 의해 클라이언트축에 세션ID 를 보존 할때 쿠키를 사용할지 여부를 지정한다. 디폴트는 1 (유효)
session.use_only_cookies boolean
session.use_only_cookies 는 이 모듈이 클라이언트 쪽에 세션ID 를 보존할때 Cookie 만 을 사용하도록 지정한다. 이 설정을 유효화 하여 세션 ID 를 URL 에 붙여서 하는 공격을 막을 수 있다. 이 설정은 PHP 4.3.0 에서 추가되었다. PHP 6.0 이후부터 디폴트가 1 (유효) 이 됨.
session.cookie_lifetime integer
session.cookie_lifetime 은 브라우저에게 송신하는 쿠키의 유효기간을 초단위로 지정한다. 0을 지정하면 브라우저를 닫을때까지라는 의미. 디폴트는 0 . session_get_cookie_params() 및session_set_cookie_params() 참조
주의 : 유효기간의 타임스탬프는 서버의 시각을 기본으로 해서 정해진다.
session.cookie_path string
session.cookie_path 에 의해 session_cookie 로 설정되는 패스를 지정한다. 디폴트는 / session_get_cookie_params() 및 session_set_cookie_params() 도 참조.
session.cookie_domain string
session.cookie_domain 에 의해 session_cookie 에서 지정하는 도메인을 지정한다. 디폴트는 지정되지않음. 이 경우는 쿠키의 사양에 따라 쿠키를 작성한 서버의 호스트명이 지정된다. session_get_cookie_params() 및 session_set_cookie_params() 도 참조
session.cookie_secure boolean
session.cookie_secure 는 시큐어한 접속을 통해서만 쿠키를 송신할지여부를 지정. 디폴트는 off 이 설정은 PHP 4.0.4 에서 추가됨. session_get_cookie_params()및 session_set_cookie_params() 참조
session.cookie_httponly boolean
쿠키를 HTTP 로만 억세스가능하도록 설정. 즉 JavaScript 같은 스크립트 언어에서는 억세스가 불가능해짐 . 이 설정을 사용하면 XSS 공격에 의한 ID 도난의 위험성이 줄어든다. ( 하지만 모든 브라우저가 이 설정을 지원하고 있지는 않다. )
session.cache_limiter string
session.cache_limiter에 의한 세션 페이지의 캐쉬제어 방법(none / nocache / private / private_no_expire / public) 을 지정. 디폴트는 nocache session_cache_limiter() 참조
session.cache_expire integer
session.cache_expire 에 의해 캐쉬된 세션페이지의 유효기간을 분단위로 지정 이 옵션은 nocache 리미터에 에서는 영향을 받지 않는다 . 디폴트는 180 session_cache_expire()도 참조
session.use_trans_sid boolean
session.use_trans_sid 는 투과적 세션 ID 를 부가할지 여부를 지정. 디폴트는 0(무효)
주의 : PHP 4.1.2 이전 버젼에서 이 옵션은 --enable-trans-sid 로 컴파일하여 유효화하였다. PHP 4.2.0 이후부터 trans-sid 기능은 항상 컴파일 된다. URL를 기본으로 한 세션 관리는 쿠키를 기본으로한 세션관리보다 세큐리터 리스크가 커진다. 예를 들어 유저가 email 로 친구에게 액티브한 세션ID 를 포함한 URL 를 보낼 수도 있고, 유저는 자신의 북마크에 세션 ID 를 포함한 URL를 보존하여 항상 같은 ID 로 사용하여 사이트에 억세스할 수도 있다.
- session.bug_compat_42 boolean
PHP 버젼이 4.2.3 및 그 이전에는 예를들어 register_globals 가 무효한 경우에도 글로벌스코프에서 세션변수의 초기화를 허용하는 문서화되어 있지 않은 특징/버그가 있다. 이 기능을 사용하고 있는 경우 session.bug_compat_warn 도 유효로 하고있는 경우 PHP 4.3.0 및 그 이후버젼에서는 경고가 생긴다. 이 특징/ 버그는 이 디렉티브를 무효로 하여 막을 수 있다.
session.bug_compat_warn boolean
PHP 버젼이 4.2.3 및 그 이전에는 예를들어 register_globals 가 무효한 경우에도 글로벌스코프에서 세션변수의 초기화를 허용하는 문서화되어 있지 않은 특징/버그가 있다. 이 기능을 session.bug_compat_42 와 session.bug_compat_warn 를 유효화하여 사용하고 있는 경우 PHP 4.3.0 및 그 이후버젼에서 경고가 발생한다.
session.hash_function mixed
session.hash_function 에 의해 세션 ID 를 생성하기위해 사용되는 해쉬 알고리즘을 지정할 수 있다. '0' 은 MD5 (128 비트) 로 , '1' 은 SHA-1 (160 비트) 를 의미.
PHP 6.0.0 이후부터는 hash 확장모듈 의 임의의 알고리즘이 (이 확장모듈이 사용가능한 경우) 지정할 수 있도록됨. 예를 들어 sha512 나 whirlpool 등등... 지원되는 알고리즘들은 hash_algos() 함수로 구할 수 있다.
주의 : 이 디렉티브는 PHP 5 에서 도입됨
session.hash_bits_per_character integer
session.hash_bits_per_character 로 바이너리 해쉬데이터를 가독 데이터로 변환할 때 각각의 문자에 몇비트를 스토어 할지를 정의할 수 있다. 지정가능한 값은 '4' (0-9, a-f) ,'5' (0-9, a-v) 그리고 '6' (0-9, a-z, A-Z, "-", ",") 이다.
주의 : 이 디렉티브는 PHP 5 에서 도입됨.
url_rewriter.tags string
url_rewriter.tags 는 투과적 세션 ID 의 부가기능이 유효화 되어있을 경우 세션 ID를 포함하기 위해 바뀌게 되는 HTML 태그를 지정할 수 있다. 디폴트는 a=href , area=href , frame=src , input=src , form=fakeentry , fieldset= 이다.
주의 : HTML/XHTML strict 에 맞추고 싶은 경우에는 form 엔트리를 삭제하고 form 필드의 전후에 <fieldset> 태그를 사용할 것.
track_vars 및 register_globals 설정은 세션변수의 보존및 회복 방법에 영향을 준다.
주의 : PHP 4.0.3 이후 track_vars 는 항상 on
원문링크 : http://www.php.net/manual/en/session.setup.php http://www.php.net/manual/en/session.installation.php http://www.php.net/manual/en/session.configuration.php
목차로 [PHP/매뉴얼 번역] - PHP 세션
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/131
PHP/매뉴얼 번역 2008/06/25 12:25
PHP 세션 - 소개
PHP의 세션기능은 여러번에 걸친 억세스를 통해서 특정 데이터를 유지하기위한 방법을 구현하고 있다. 보다 커스터마이즈된 어플리케이션을 구축할 수가 있다.
Web 사이트 방문자에게 세션ID 라는 유니크ID 를 할당하며 이 ID는 유저(클라이언트)쪽에 쿠키로 저장하거나 URL 에 추가한다.
세션 기능을 사용하여 임의의 갯수의 변수를 리퀘스트와 리퀘스트사이에 넘겨주고 받을 수 있게되었다. 방문자가 사이트에 억세스할때 PHP 는 특정 세션 ID 가 리퀘스트와 함께 송신되고 있는지를 (session.auto_start 가 1일 경우) 자동적으로 , 또는 (session_start() 에 의해 명시적으로 또는 session_register() 에 의한 암묵적으로) 확인한다. 이 ID 가 송신되고 있는 경우에는 이전에 보존된 환경이 재생성된다.
경고 : session.auto_start 를 on 한 경우 오브젝트를 세션변수에 대입할 수 없게 된다. 세션이 오브젝트를 재생성하기 위해서는 세션 개시전에 클래스정의가 로드되어야하기 때문이다. 모든 등록된 변수는 리퀘스트가 종료된후 시리얼라이즈된다. 미정의 등록변수는 미정의 되었다고 마크가 붙는다. 이러한 변수는 나중에 유저가 정의하지않는 한 이후의 억세스에서 세션모듈에 의해 정의되지 않는다.
경고 : 일부데이터 타입은 시리얼라이즈가 불가능하기에 세션에 저장할 수 없다. 리소스 타입의 변수 또는 순환 참조(circular references)를 하고 있는 오브젝트 (예를 들어 자기자신에의 참조를 다른 오브젝트에게 넘겨주고 있는 오브젝트 ) 들이 여기에 속한다. 주의 : 세션기능은 PHP 4.0.0 에서 지원됨. 주의 : 세션을 처리할때 session_register() 함수를 사용하거나 수퍼글로벌 배열 $_SESSION 에 새로운 키를 추가하여 변수가 등록될때까지 세션의 레코드는 생성되지 않는다. 세션이 session_start() 함수에 의해 개시될때에도 마찬가지이다. 원문링크 : http://www.php.net/manual/en/intro.session.php목차로 [PHP/매뉴얼 번역] - PHP 세션
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/130
PHP/매뉴얼 번역 2008/06/25 12:01
여기에 번역해놓았으니 여기를 참고할것.
http://doc.a4box.com/php/book.session.html
세션 (Sessions)
PHP 의 세션은 연속된 엑세스에서 특정데이터를 유지하기 위한 방법이다. 이 기능을 이용하여 보다 커스터마이즈된 어플리케이션의 구축이 가능하며 웹 사이트를 더 멋있게 꾸밀 수 있다. 자세한 정보는 다음의 목차들을 참조할것
- 소개
- 인스톨 / 설정
- 기정의 정수
- 예
- 세션 , 보안
- 세션 함수 목차
- session_cache_expire 현재의 캐시의 유효기간을 리턴
- session_cache_limiter 현재의 캐시리미터를 구하거나 설정
- session_commit session_write_close 의 얼라이어스
- session_decode 문자열로부터 세션 데이터를 디코드
- session_destroy 세션에 등록된 데이터를 전부 파기
- session_encode 현재의 세션데이터를 문자열로 인코드
- session_get_cookie_params 세션쿠키의 파라미터값 구함
- session_id 현재 세션 ID 를 구하거나 설정
- session_is_registered 변수가 세션에 등록되어 있는지 검사
- session_module_name 현재의 세션 모듈을 구하거나 설정
- session_name 현재의 세션명을 구하거나 설정
- session_regenerate_id 현재 세션ID 를 새로 생성한 ID 로 바꿈
- session_register 현재 세션에 하나 이상의 변수를 등록
- session_save_path 현재의 세션 데이터보전 패스를 구하거나 설정
- session_set_cookie_params 세션쿠키파라미터를 설정
- session_set_save_handler 유저 정의 세션 보존 함수를 설정
- session_start 세션데이터를 초기화
- session_unregister 현재 세션에서 변수 삭제
- session_unset 모든 세션변수를 개방
- session_write_close 세션 데이터를 저장후 세션 종료
원문 링크 : http://www.php.net/manual/en/book.session.php
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/129
雑談 2008/06/24 16:41
왼쪽이 1978년 12 월 7일 시애틀로 회사를 이전하기 전날 찍은 사진 이고 오른족이 얼마전 찍은 사진이라고... 30년 동안 죽은 사람도 있고 , 은퇴한 사람 , 은퇴하는 사람 등등... 30년이 지나 다시 모여 사진찍을때의 느낌 어땠을까... 링크 : Return of the ’70s Weirdos http://www.newsweek.com/id/142636
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/128
Database/MySQL 2008/06/24 13:33
MySQL 프로세스 리스트 보기에는 다음의 두가지 방법을 사용
[aokio]$ mysqladmin processlist
mysql> show processlist; +---------+------+-----------+-------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +---------+------+-----------+-------+---------+------+-------+------------------+ | 1602724 | root | localhost | test | Sleep | 70 | | NULL | | 1603286 | root | localhost | NULL | Query | 0 | NULL | show processlist | +---------+------+-----------+-------+---------+------+-------+------------------+ 2 rows in set (0.00 sec) 프로세스 죽이기. 해당 아이디 번호를 가지고 킬하면 프로세스를 종료시킬 수 있다.
mysql> kill 1602724; Query OK, 0 rows affected (0.00 sec)
mysql> show processlist; +---------+------+-----------+-------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +---------+------+-----------+-------+---------+------+-------+------------------+ | 1603286 | root | localhost | NULL | Query | 0 | NULL | show processlist | +---------+------+-----------+-------+---------+------+-------+------------------+ 2 rows in set (0.00 sec)
Id : 프로세스 아이디 MySQL 이 관리하는 스레드 번호。
User : 스레드에 접속하고 있는 MySQL 유저명
Host : 유저가 접속하고 있는 호스트명 , IP 어드레스
Command : 스레드의 현재 커맨드 상태 .
Time : 프로세스가 현재 커맨드상태에서 동작 시간
State : 스레드의 상태에 대해 사람이 읽을 수 있는 형태의 정보 Info : 현 실행되고 있는 SQL . "SHOW PROCESSLIST" 최대 100자까지 표시 전부 표시하려면 "SHOW FULL PROCESSLIST"
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/127
Bookmark 2008/06/23 00:09
Magic Toolbox
자바스크립트로 구현하는 이미지처리 툴들.
상업적인 사이트는 라이센스를 구입해야하지만 개인적인 페이지는 무료로 사용할 수 있는듯.
링크 : http://www.magictoolbox.com/
Trackback 0
:
Trackback Address :: http://breakpoint.a4box.com/trackback/126
|