728x90 PHP 보안은 PHP 버전에 따른 보안과 Web Application 보안으로 나눌 수 있다. PHP 5.4 에서는 HTTP header injection 취약점을 개선시켰다. 높은 버전의 PHP 를 사용하는 것이 바람직하지만, 이전버전과의 호환성에 문제가 있을 수 있으므로 Web application 코드를 충분히 테스트하는 것이 좋다.
PHP는 사용자의 입력 실수(문자형, 숫자형)를 자동으로 형변환해주는 기능이 있다. 이 기능을 잘못 사용하면 보안에 취약해질 수 있다. 문자열을 비교하고 싶으면 일치 연산자(===)로 비교하거나, 반드시 strcmp()함수를 사용해야 한다.
PHP 환경설정 파일 중에서 간단하게 정리해둔다.
disable_functions = phpinfo()
error_reporting = E_ALL ; 해킹의 먹이감이 되므로 평소에는 Off 로 해둔다. 에러가 있을 경우 디버깅 가능하도록 에러 메세지를 출력해준다.
;default 8M 로 되어 있음, upload_max_filesize 보다 크게 설정해야 함 post_max_size = 20M memory_limit = 128M
allow_url_fopen = Off ; On 인 경우 외부의 URL 을 로컬 파일과 똑같이 취급할 수 있다. ;해당 옵션을 On으로 설정하면 파일 액세스 시 외부 사이트의 파일을 호출할 수 있다. ; PHP 5.2 이후부터는 allow_url_include = off 로 설정이 분리되었다.
date.timezone ="Asia/Seoul" session.save_path = "/path/to your folder" ; 세션파일을 저장할 폴더를 지정한다. ; UNIX OS에서 기본값은 /tmp 이므로 공유 서버의 경우 다른 사용자가 세션 정보를 읽거나 ; 세션 하이젝을 할 수 있으므로 Application 별로 다른 사용자가 액세스할 수 없는 비공개 폴더를 지정하는 것이 좋다. ;session.save_path = /tmp/session 디렉토리를 expose_php = Off session.use_only_cookies = 1
;session.cookie_secure = 1
session.cookie_httponly = 1 session.use_trans_sid = 0 기본 설정값 session.gc_probability = 1 세션을 10분 동안 유지하기 session.gc_maxlifetime = 600 ;사용자가 아무짓 안할 경우 600초 즉 10분 후에 가비지로 보이는 것을 삭제한다. ;지정된 session.save_path 폴더 아래로 가서 변경이 없는 파일을 찾아 지운다.
; 보안상 0 으로 놓은 것이 좋다고는 하는데, 세션은 생성되는데 다른 파일에서는 인식이 안된다.
========================================================= session_start(); 삽질을 열심히 하면서 알아낸 것은 PHP 파일 인코딩 모드가 UTF8 이면 정상인데 UTF8+BOM 으로 하면 에러가 발생한다. 세션의 경우에도 characterset 을 맞춰줘야 정상동작한다.
echo 로 찍어보면 해당 파일에서 분명히 세션이 생성된다. echo (isset($_SESSION['userID']) ? $_SESSION['userID'] : "Visitor"); 그런데 다른 파일에서 세션 정보 유지가 안된다. 환경설정에 가서 로 변경하고 나서야 세션 정보가 유지되었다.
참고 : 세션관련 참조하면 도움될 게시글 http://www.serverguide.co.kr/82
세션과 보안 : https://link2me.tistory.com/647 참조 공유하기 게시글 관리 구독하기소소한 일상 및 업무TIP 다루기저작자표시 비영리 'Web 프로그램 > Web 개발도구' 카테고리의 다른 글[Aptana] aptana eclipse plugin installation (0)2017.01.15Aptana Studio 3 for PHP 설치 (0)2017.01.07PHP 파일 업로드 개념 잡기 및 PHP 환경 설정(php.ini) 수정 (0)2016.03.24피들러 배우기 - 1 (0)2016.02.10윈도우기반 AutoSet 9 설치 (0)2015.09.13 |