본문 바로가기

OCIEnvNlsCreate() failed php 에서 오라클 연결시 오류 발생 (apache2.2.22 / php5.3.14) oci_connect() function.oci-connect: OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME and LD_LIBRARY_PATH are set and point to the right directories in /home/oops4u/www/db.php on line 3 ORACLE_HOME 이랑 LD_LIBRARY_PATH 가 설정이 안됐나; 오디에??언젠가 아무 설정 없이도 잘 됐던거 같은데 ㅜㅜ음... 페이지 권한 때문인가? oracle:oinstall 로 바꿔보고 ..
PHP Security 1. 외부/입력 데이터 처리 GET/POST/COOKIE/SESSION 변수, DB, php config 등으로 전달되는 데이터는 변조될 수 있으므로 정규식을 사용하여 입력 처리. function cleanInput($input){ $clean = strtolower($input); $clean = preg_replace("/[^a-z]/", "", $clean); $clean = substr($clean,0,12); return $clean;} $userId = cleanInput($_POST['userid']); 입력받은 $_POST['userid'] 변수의 형식이 영문(소문자), 12자 이내로만 이루어져야 한다면,위와 같이, 입력 변수를 체크할 수 있도록 처리합니다.특히 사용자 입력값에 길이 제한을..
http / https 세션 공유 보안서버 구축시에 필요시 프로토콜 전환 작업이 필요합니다. http <-> https로그인은 다음과 같은 처리 순서를 가집니다. http 로그인 폼에서 사용자로부터 입력을 받습니다. https 전달된 정보(id/pw)를 체크합니다. http return url로 이동합니다. 사용자 입력이 올바르다면 3번 과정에서 로그인 된 페이지가 출력되야 하는데,IE에서는 로그인으로 나오지만, chrome, firefox 등에서는 로그인이 되지 않은 페이지가 출력됩니다. 결론적으로, http 는 로그인 되지 않은 상태. https 는 로그인이 된 상태. 몇몇 브라우저에서 http <-> https 간에 세션 공유를 못하는 것이 원인. 다음과 같이 해결 하였습니다. http 로그인 폼에서 사용자로부터 입력을 받고, ht..
mysql 접속 시 UTF-8 상태에서 한글 깨짐 한 8시간 가량 삽질했더니, 목이 매우 뻐근하군...삽질 주제는 어김없이 찾아온 인코딩 UTF-8.물론 UTF-8의 기본적인 인코딩 설정은 정상적으로 마치고, php에서 DB와의 한글 입출력을 했는데, '???? 궭걐궹...' 이 즈랄..엄청난 시간을 투자해서 문제를 해결해 보려고 했지만, 방법이 구리다.- 일단 터미널에서 찍어본 mysql 인코딩 정보 mysql> show variables like 'c%';+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | utf..
print VS echo 공통점문자열을 출력한다.실제 함수가 아닌 언어 구조이므로, 가변함수 방식으로 호출할 수 없고 괄호를 사용할 필요가 없다.차이점void echo ( string arg1 [, string argn...] )int print ( string arg )print를 함수처럼 호출하면 1을 반환한다.print는 대체로 echo보다 느리다.ex)// print는 함수이다.($some_var) ? print('true') : print('false'); // echo는 함수가 아니므로, 다음 코드는 유효하지 않다.// Parse error: parse error, unexpected T_ECHO($some_var) ? echo 'true' : echo 'false'; echo $some_var ? 'true': 'f..
오류 메시지 출력(alert) 및 페이지 이동(refresh) 문제브라우저의 Back, Forward 버튼을 누를 때 로그인, 글 작성등을 처리하는 중간 페이지에 걸려서만료된 페이지라는 메시지가 출력되는 경우처리 결과에 따라 오류 페이지로 계속 되돌아 오는 경우를 경험해보셨을거라 생각됩니다. 예를들어, A(로그인 페이지) -> B(로그인 처리 페이지) -> C(정상처리 후 이동 URL), D(오류 처리 후 이동 URL) 방식으로 처리한다면 B는 둘 중 하나입니다.정상이면 (메시지 출력 후) C로 이동 오류이면 (오류메시지 출력 후) D로 이동 방식정상이면 C로 이동 오류이면 D로 이동 (D = 오류메시지를 포함한 A와 동일/유사 페이지) 방식메시지를 출력하기 위해 JavaScript의 alert를 사용했다면 C나 D 페이지에서는 브로우저의 Back버튼을 누르면 B로..
CSRF 공격 CSRF (Cross-Site Request Forgery: 크로스 사이트 리퀘스트 위조) 공격자가 다른 사용자로부터 HTTP 요청을 위조하는 종류의 공격을 통틀어서 CSRF라고 한다. 폼에 토큰을 추가시키면 CSRF 공격의 위험을 효과적으로 제거할 수 있다. HTML 폼에 토큰 삽입:
...
토큰 유효성 검사:
파일 업로드 공격 위와 같이 숨겨진 폼 변수 MAX_FILE_SIZE 는 브라우저가 허용할 수 있는 파일의 최대 크기를 바이트 단위로 표시한 것이다. 이는 클라이언트에만 있는 제한이기 때문에 공격자는 쉽게 제한을 제거할 수 있다. 공격에 대응하기 위해 신뢰도를 높여주려면 PHP 지시문 post_max_size나 upload_max_filesize를 변경하여 파일 업로드 크기를 제한할 수 있도록 한다. phpinfo() 명령어로 지시문을 출력하여 확인할 수 있다. 서버 호스팅을 받아서 직접 수정할 수 없을 때에는 ini_set 함수를 이용하여 변경한다. ini_set( 'post_max_size', '8M' );POST ..