프로그램/php2015. 7. 11. 18:27
반응형

첨부파일을 통한 XSS 공격 방식은

XSS 공격용 파일을 만들어(확장자만 jpg 같은 이미지로 변경한 파일, html, 기타 등) 첨부파일로 업로드 한 후 해당 파일을 클릭하면 실행이 되거나 해커 서버에 연결해서 원하는 정보(예>쿠키)얻어 가는 공격이다.

 

 

 

첨부파일이 업로드되는 경로에 다음의 내용으로 .htaccess 파일을 생성한다.

.htaccess

 

<IfModule mod_headers.c>
    Header set Content-Disposition attachment
</IfModule>

 

생성을 한 후 첨부파일을 클릭하거나

브라우저 입력란에 해당 파일의 url 경로를 직접 입력해서 실행해보면

무조건 다운로드 창이 실행되기 때문에 파일이 실행되는 것을 막을 수 있으며 공격도 막을 수 있게 된다.

 

 

참고> 첨부파일 업로드 경로를 웹 서버 경로(DOCUMENT_ROOT)가 아닌 웹으로 접근할 수 없는 경로로 한 후 파일명은 DB 등에 저장을 하고 파일명 자체도 알 수 없는 임의의 파일명으로 바꾸어서 업로드하는 방법이 있다.

다운로드를 하는 경우에는 별도의 다운로드 실행 파일을 만들어서 사용을 한다.

반응형
Posted by 은둔고수
프로그램/php2015. 6. 24. 17:08
반응형

HTMLPurifierXSS(cross-site scripting) 취약점을 필터링을 하는 라이브러리로

게시판의 글 제목이나 글 내용 등에 script, onmouseover 등을 삽입해 공격을 하거나 에러 등을 만들어서 원하는 정보를 알아내는 취약점을 필터링해서 안전한 속성, 이벤트, 태그 등만을 허용한다.

 

[HTML Purifier 설치하기]

http://htmlpurifier.org 에서 다운을 받아 압축을 푼 후 library 디렉토리만 서버에 업로드 하는 것으로 설치가 끝난다. (zip 파일을 사용했다.)

(리눅스에서 바로 다운받고 싶다면 .tar.gz 파일을 사용한다.)

 


 

 

더보기>

- php htmlpurifier 에러 - Warning: Directory DefinitionCache Serializer not writable, please chmod to 777

반응형
Posted by 은둔고수
프로그램/php2015. 5. 28. 14:50
반응형

PHP PDO(PHP 5.1.0부터 제공)를 사용하게 되면 같은 코드로 여러 종류(예>MySQL, SQLite, 기타 등등)의 데이터베이스(DateBase) 연결에 사용할 수 있게 된다.

그리고 무엇보다도 SQL 인젝션(SQLInject) 공격을 걱정하지 않아도 된다.

중요> PHP 5.5 부터는 mysql_connect(), mysql_query() 등과 같은 mysql_ 로 시작하는 함수는 사용할 수 없게 되므로 PDO 또는 MYSQLi를 사용하도록 미리 준비하는 것을 권장한다.

 

 

[PDO-MySQL 모듈 설치 소스 하기]

PDD-Mysql 모듈은 기본 제공으로 PHP 설치 소스 경로로 이동한 후 진행한다.

(없으면 다운 받는다.)

참고>PDO-Mysql 모듈 다운받기

]# wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz

]# tar xvzf PDO_MYSQL-1.0.2.tgz

]# cd PDO_MYSQL-1.0.2

 

 

[PDO 설치 학인]

phpinfo()를 통해서 확인할 수 있다.  

... 생략 ...

 

또는

]# /usr/local/php/bin/php -i | grep PDO

 

 

 

 

 

[PDO-Mysql 모듈 추가 설치] : PHP 설치 Configure 옵션에 추가되지 않는다.

php 설치 소스로 이동한다.

]# cd /usr/local/src/apm/

]# ll

 

 

 

 

 

 

만일을 대비해 백업을 해둔다.

]# mkdir php-5.4.2_bk

]# cp -r php-5.4.2/* php-5.4.2_bk/

PDO-Mysql 모듈이 있는 위치로 이동한다.

]# cd php-5.4.2/ext/pdo_mysql/

]# ll

 

 

 

 

 

phpize명령어를 사용해서 확장모듈(여기서는 PDO-Mysql)을 위한 빌드 환경을 만든다.

]# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:  20100412

Zend Module Api No:  20100525

Zend Extension Api No:  22100525

참고>phpize 실행파일이 해당위치에 없다면 find / -name phpize를 실행해서 찾는다.

 

 

 

 

참고>phpize를 실행하면 configure 파일 및 기타 파일들이 생성된다.

- Cannot find autoconf 오류 발생시

 

 

컴파일을 한다.

]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql

]# make

]# make install

 

 

 

 

모듈 생성 확인

컴파일이 완료되면 /usr/local/php/lib/php/extensions/no-debug-zts-20100525/ 와 비슷한 경로를 찾은 후 pdo_mysql.so 파일이 생성되었는지 확인한다.

참고> 기존에 다른 확장 모듈을 추가했다면 다른 모듈 파일도 같은 경로에 있는 것을 확인할 수 있다.

 

 

 

 

PDO-Mysql 모듈 연동

php.ini 파일을 아래와 같이 수정한다.

]# vi /usr/local/apache/conf/php.ini

extension_dir = /usr/local/php/lib/php/extensions/no-debug-zts-20100525” <- 변경

extension=pdo_mysql.so <- 추가

apache를 재 시작한다.

]# service httpd restart

phpinfo()를 이용해서 PDO-Mysql활성화되었는지 확인한다.

]# /usr/local/php/bin/php -i | grep PDO

 

 


 

더보기>

- php pdo db 연결 / pdo db connection / pdo database 접속 / pdo db open

- php pdo limit 사용법 / pdo query limit offset / pdo mysql limit / pdo bindValue

- php pdo like 사용법 / pdo query like / pdo mysql like / pdo bindValue

반응형
Posted by 은둔고수