반응형
세션과 쿠키
쿠키 사용 안 함, url sessionId 지참
nocookie.php
<?php
// ini_set php.ini 설정 항목 수정
ini_set('session.use_cookies',0)
ini_set('session.use_only_cookies',0)
ini_set('session.use_trans_sid',1);
ini_set('session.name', 'sid');
session_start( )
$_SESSION['user'] = array('uid'=>1);
echo '<ahref="session_url.php">url을 사용하여 sessionId</a>;
session_url.php
<?php
// session 값
ini_set('session.use_cookies',0)
ini_set('session.use_only_cookies',0)
ini_set('session.use_trans_sid',1);
ini_set('session.name', 'sid');
$sess_name = session_name( );
session_start( )
print_r($_SESSION['user'])
session fixation 공격
해커가 sessionid를 얻기 위해 웹사이트를 방문하다
페이지 지향점을 위조한다고요?sid=sessionid, 사용자 계정 비밀번호 입력
해커는 로그인 성공 sessionid 획득, 다른 작업 완료
[솔루션] 로그인이 완료되면 sessionid 다시 쓰기
세션 유지
공격자가 sessionId를 획득하여 성공적으로 시스템에 진입하고 타이머를 다르게 설정하여 페이지를 새로 고침으로써 session을 항상 유효하게 한다
[솔루션] 서비스 측에서 session을 저장하지 않고 사용자 정보를 로컬 쿠키에 저장하며, 쿠키 평문 저장소는 공개키를 배포하여 클라이언트에 암호화할 수 있기 때문에 서비스 측에서 개인키를 사용하여 암호를 해독합니다.
파일에 취약점 포함
include
require
fopen
readfile
...
사례 1
/subfiles/a.php
<?php
echo 'a.php';
/subfiles/b.php
<?php
echo 'b.php';
/subfiles/ab.php.jpg
<?php
phpinfo();
upload.php
<?php
$path = $_GET['path'];
include('/subfiles/'.$path);
ab.php.jpg php 파일 jpg 접미사를 업로드하는 것은 사진을 업로드하기 위한 접미사 검사입니다.
마지막으로 서버 정보 얻기
사례 2
웹 사이트 루트 디렉터리가 아닌 파일
upload.php
<?php
$path = $_GET['path'];
include($path);
원격 파일 포함 (위험)
php.ini allow_url_include = on
해결방안
사용자가 include와 같은 파일 포함 함수를 직접 사용하지 않도록 하기
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php는 2차원 배열에 중복된 id가 있는지 여부를 판단한다 (0) | 2022.11.02 |
---|---|
php에서 HTTP 요청 코드 시작 (0) | 2022.11.02 |
mysql 미제출 트랜잭션을 조회하는 sql 문 (0) | 2022.11.01 |
MySQL 날짜별 최근 7일 데이터 집계 (0) | 2022.11.01 |
PHP 연결로 읽기 TCP 스트림 보내기 (0) | 2022.11.01 |