| 여러장의 이미지 간단히 합치기 | 움직이는GIF만들기 | 썸네일 쉽게 만들기
BLOG main image
분류 전체보기 (78)
I am (0)
Today (1)
개발자이야기 (10)
나만의 유용한정보 (7)
서버관련 (38)
지름신 (5)
사진/여행 (1)
끄적끄적 (4)
골프 (8)
주식 (2)

memcached monitor tool 소개
§ 청명공자's NotePad §
ssh 접속시 rsa 인증을 통해서..
컴ⓣing의 주절거림 in textcube
«   2017/06   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
853,305 Visitors up to today!
Today 87 hit, Yesterday 292 hit
daisy rss
티스토리 가입하기!
'php'에 해당되는 글 11건


2015.04.07 15:21

요즘은 DDOS공격같은 방법보다는 웹쉘이나  XSS삽입공격등으로 사이트를 위협하고 있습니다.

 

특히 XSS관련 공격은 가장 빈번한 방법으로

대부분의 사이트들의 인증은 쿠키(세션)를 통한 방식으로 하기때문에 "쿠키 하이제킹 방지" 코드만

넣어도 어느정도 방어가 됩니다.

거의 모든 브라우져에서 지원되므로, 아래와 같은 방식으로 코드를 넣으면 도움이 됩니다.

 

 

쿠키 사용예)

PHP 5.x 이상

SetCookie("auth_xxx",$user,0,"/",".makeshop.co.kr",false, true);

PHP 4.x

SetCookie("auth_xxx",$user,0,"/",".makeshop.co.kr; httponly");

 

세션을 사용예) ( php5.2 이상)

php.ini 에서

session.cookie_httponly = true;

설정후 php 재가동

 

서버에서 보내는 쿠키 헤더값은 아래와 같네요.

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 07 Apr 2015 05:06:07 GMT
Content-Type: text/html
Connection: keep-alive
Set-Cookie: test=123; path=/; domain=test.co.kr; httponly

 

브라우져를 재가동후 사이트접속(로그인)후
주소창에
javascript:document.cookie
입력하여 확인해보면, 설정한 쿠키(세션) 이 보이지 않은것을 확인할 수 있습니다. :)

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2014.08.28 13:40

아파치도 비슷하지만, NGINX에서 PHP프레임웍을 사용하려면,

보통 아래와 같이 기술하게 된다.

 

        if (!-e $request_filename)     {

               rewrite ^/(.*)$ /index.php?/$1 last;
        }
        # 파일이 존재하지 않으면, 프레임웍의 index.php 로 rewrite

 

이런경우 없는 이미지파일 호출이나 css, js 파일을 호출하더라도.

파일이 없는경우 무조건 index.php 로 가게 되니 서버의 부담이 많아진다. (악의적인호출포함?)

 

아래와 같이 수정

 

        set $framework 'NO';
        if (!-e $request_filename)     {
               set $framework 'OK';
        }
        if ($uri ~ '(\.css|\.js|\.ico|\.gif|\.jpg|\.png|\.swf)')
               set $framework 'NO';
        }
        if ($framework = 'OK') {
               rewrite ^/(.*)$ /index.php?/$1 last;
               break;
        }

 

위와 같이 하여 확장자가 이미지파일이거나 css/js 등일 경우 파일이 존재하지 않으면, 프레임웍을 안타게 설정한다.

확장자는 알아서 추가..ㅎㅎ

 

 

 

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2014.01.14 17:04

2014년 부터 도로명 주소 사용 의무화로 개발자들 사이에선

도로명 주소가 화두네요..

 

기존 우편번호가 5만건 데이터에서 데이터가 600만건으로 늘어나면서,

작은 호스팅 사용하시는분들이 구축하기에는 기술적/시간적/용량/관리적

여러가지 어려운면이 있는거 같습니다.

 

PHP개발자 커뮤티니 PHPSCHOOL.COM 에서

무료로  도로명 주소 우편번호 오픈API를 제공하네요.

 

테스트 예제 페이지 http://post.phpschool.com/post.html 

신청 페이지 http://post.phpschool.com/join.html

PHPSCHOOL 기술팁텍란 http://www.phpschool.com/link/tipntech/77844 

 

간단한 정보입력과 메일인증으로 바로 사용할수 있네요.

 

PHP예제 소스 제공하고 있고, PHP 시리얼라이즈 형식과  JSON형식으로 리턴해주니

자바사용자분은 JSON으로 사용하시면 되겠네요~

 

DB인덱스 사용하지 않고, 검색엔진을 사용해서 검색속도가 빠른게 장점이며,

통합검색을 지원하네요.

 

"가산동 371-50" "에이스하이엔드 3차" 등 여러단어 조합검색도 되고,

좋은거 같습니다. 

기존 지번주소인 구주소로도 도로명주소를 쉽게 찾을 수 있게도 되어 있네요.

 

급하게 붙이시려는분 참고하세요~!

저작자 표시 비영리 변경 금지
신고
Aterilio | 2014.05.08 18:12 신고 | PERMALINK | EDIT/DEL | REPLY
c# (Winform) 으로 짜고 있습니다만,
기존 오픈 API는 주소로 요청하여 XML 파일을 내려받아 표시하도록 하고 있거든요.
근데 이게 제대로 원하는만큼 작동이 안되어 위와 같은 주소를 사용하고 싶습니다만,
php네요... 혹시 C#으로 사용할 수 있는 방법이 없을까요?
| 2014.10.27 15:19 신고 | PERMALINK | EDIT/DEL
json이라는 표준데이터로 넘겨주기때문에 C#에 json 으로 구현하시는게 좋을거 같습니다.
Name
Password
Homepage
Secret


2013.02.14 13:52

FreeBSD9.x / php5.3.x

 

--enable-fpm 설치시 아래와 같은 에러가 난다! ㅎ

 

/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c: In function 'fpm_socket_get_listening_queue':
/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c:400: error: 'struct tcp_info' has no member named 'tcpi_sacked'
/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c:405: error: 'struct tcp_info' has no member named 'tcpi_unacked'
/usr/local/php-5.3.9/sapi/fpm/fpm/fpm_sockets.c:409: error: 'struct tcp_info' has no member named 'tcpi_sacked'
*** [sapi/fpm/fpm/fpm_sockets.lo] Error code 1

 

아래와 같이 소스를 수정..

 

/usr/local/php-5.3.9]$ find . -name "fpm_sockets.c"
./sapi/fpm/fpm/fpm_sockets.c

 

vi ./sapi/fpm/fpm/fpm_sockets.c

 

tcpi_sacked -> __tcpi_sacked

tcpi_unacked -> __ tcpi_unacked

 

        if (info.tcpi_sacked == 0) {
                return -1;
        }

        if (cur_lq) {
                *cur_lq = info.tcpi_unacked;
        }

        if (max_lq) {
                *max_lq = info.tcpi_sacked;
        }

 

아래와 같이 수정

 

        if (info.__tcpi_sacked == 0) {
                return -1;
        }

        if (cur_lq) {
                *cur_lq = info.__tcpi_unacked;
        }

        if (max_lq) {
                *max_lq = info.__tcpi_sacked;
        }

 

재컴파일...    잘된다..ㅎㅎ

 

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2012.05.29 17:56

요즘 성능이슈로 세션이나 캐싱을 memcached로 많이 구현되어 있는거 같다.

memcached 모니터링 툴을 찾다가 괜찮은 툴이 있어서 소개~

 

http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/

 

memcache.php 소스다운은 위의 블로그 방문에도 있고 직접 받으려면,

http://livebookmark.net/memcachephp/memcachephp.zip

 

memcache.php 파일을 원하는 서버폴더에 넣고,

 

아래의 소스상에서 수정만 하면 된다. (접근할 사용자ID/비번/memcached 서버설정만 하면 끝)

 

define('ADMIN_USERNAME','사용자ID');    // Admin Username
define('ADMIN_PASSWORD','비밀번호');        // Admin Password
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);

$MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // add more as an array
//$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

 

소스에서처럼 서버들을 array로 여러개 지정이 가능하다.

 

아래는 구동화면~

 

 

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2011.04.08 17:09
사용자 업로드폴더(웹에서접근가능)나 업로드폴더가 아닌 일반 이미지폴더에
<? phpinfo() ?> 로 저장후 test.jpg를 올리게 되면
nginx는 uri 뒤에 확장자만 .php면 넘기게 되어 있기때문에 보안에 주의해야합니다.

ex) http://abc.com/images/test.jpg/xxx.php

위의 경로로 test.jpg가 구동되는것을 방지하려면,

try_files $uri $uri/ /index.php;
if (!-f $request_filename) { return 403; }

혹은

if (!-e $request_filename) { rewrite ^.*$ /index.php last; }

이렇게 구성해주면 됩니다.

통상적인 프레임워크를 쓰기위한 rewite 가 아래와 같이 구성되어 있으면
        if ($request_filename ~* ".*\.(php)$") {
                rewrite ^.*$ /index.php last;
        }
        if (!-e $request_filename) {
                rewrite ^.*$ /index.php last;
        }
상관없겠네요..

nginx 쓰면서 가장 보안에 주의해야할 부분입니다.

저작자 표시 비영리 변경 금지
신고
Name
Password
Homepage
Secret


2011.03.14 16:39
php-fpm 모듈을 올릴때

/usr/local/sbin/php-fpm start

아래와 같은 에러가 나면서 start 스트립트가 멈추지 않는 현상이 나타난다.
fpm_event_loop(), line 107: libevent: entering main loop


vi /usr/local/sbin/php-fpm 의 상단에
php_fpm_BIN=/usr/local/bin/php-cgi
php_fpm_CONF=/usr/local/etc/php-fpm.conf
;php_fpm_PID=/usr/loca/logs/php-fpm.pid
php_fpm_PID=/var/run/php-fpm.pid

과 같이 pid의 경로를 제대로된 경로로 수정해주니 잘되었따아.. 1시간삽질;;;

신고
김영현 | 2011.03.26 13:08 신고 | PERMALINK | EDIT/DEL | REPLY
참 좋은 프로그램이네요^^ 근데, "가로몇행*세로몇열"로 선택해서 맞춰 이미지를 합칠 수 있다면 더 좋겠네요.
Name
Password
Homepage
Secret


2009.08.03 11:29

리눅스에서 php설치시

/usr/bin/ld: /usr/local/lib/libz.a(compress.o): relocation R_X86_64_32 against `a local symbol' can not be used when mak  ing a shared object; recompile with -fPIC
/usr/local/lib/libz.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1

에러시

zlib 설치를
./configure -s
로 shared library 로 컴파일하고
php를 재설치한다.
잘된다.;;
신고
하늘사람 | 2009.12.26 12:46 신고 | PERMALINK | EDIT/DEL | REPLY
비슷한 에러가 ruby 개발 환경을 설치하면서 있었는데 해결되었네요.
감사합니다 ^^
| 2009.12.31 13:35 신고 | PERMALINK | EDIT/DEL
오우~ 도움되셨다니 좋네요~! ㅎㅎ
레다 | 2010.03.04 17:19 신고 | PERMALINK | EDIT/DEL | REPLY
같은 에러 였는데 덕분에 해결 잘 했습니다. 감사합니다.
이인한 | 2010.08.27 10:48 신고 | PERMALINK | EDIT/DEL | REPLY
메일 서버에 컴파일하다 안 되서 찾다보니 왔습니다~ 감사합니다~ ^_^
Name
Password
Homepage
Secret


2008.03.04 21:04
FreeBSD 에서 Apache2 + PHP 5.x 를 설치하는 방법

kldload accf_http
를 띄운다.

vi /boot/loader.conf 에
accf_http_load="YES"
추가하고 리부팅 한번 때려주거나,

커널옵션에
options ACCEPT_FILTER_HTTP
를 추가하고 커널컴팔 후 리부팅한다.

최신 아파치(현재는 2.2.8) 을 가져와서 소스를 푼다.

./configure --prefix=/usr/local/apache2 --enable-module=most --enable-shared=max --enable-rewrite --enable-headers --enable-rewrite --enable-deflate --enable-so --with-included-apr

PHP를 동적으로 컴파일해야 하기때문에  --enable-so는 반드시 있어야한다.
그외 옵션추가는 ./configure --help  로 참조한다.
설치디렉토리는 --prefix 의 경로로  변경이 가능하다.

make; make install

위의 과정으로 아파치 컴파일은 완료!

FreeBSD 6.x 의 경우 기본적으로 perl이 설치안되어 있으므로 perl을 설치하는것이 좋겠다.

cd /usr/port/lang/perl5.8
make install

최신의 PHP 소스롤 가져다가 푼다.

./configure  --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/usr/local/apache2/conf --with-mysql=/usr/local/mysql --with-zlib-dir=/usr/local/zlib --enable-ftp --enable-sockets --enable-mbstring --disable-debug --with-config-file-path=/usr/local/lib --with-iconv

아파치 설치된 경로로 apxs 를 지정한다.
그외 gd를 설치하거나 기타 옵션을 주려면, 마찬가지로 ./configure --help를 참고한다.

make; make install

인스톨후
# php -v
PHP 5.2.5 (cli) (built: Nov  5 2007 16:11:19)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies
와 같이 버젼이 제대로 나오는지 확인한다.

아파치 설치 디렉토리에서
vi /usr/local/apache2/conf/httpd.conf
후에 아래를 추가한다.
LoadModule php5_module        modules/libphp5.so
AddType application/x-httpd-php .php

그외 아파치 설정파일은 아파치 문서를 참고한다.
.php 외의 확장자나 다른확장자로 php 스크립트를 만드려면 뒤에 추가해도 된다.
ex) AddType application/x-httpd-php .php .html .phps

/usr/local/apache2/bin/apachectl start

아파치를 구동한다.
신고
응삼 | 2008.05.24 11:11 신고 | PERMALINK | EDIT/DEL | REPLY
이미지 합치는 프로그램 정말 잘 쓰고 있습니다.
감사합니다 ^^
| 2008.09.21 11:09 | PERMALINK | EDIT/DEL | REPLY
비밀댓글입니다
Name
Password
Homepage
Secret


2008.02.13 18:01

보통 쉘프로그램이나 배치프로그램으로 사용자 입력값을 받고 싶을때가 있다.
물론 php로도 훌륭한 스크립트를 만들 수 있는건 당연...

그럴경우 유용하게 사용할 수 있다~~

#!/usr/local/php/bin/php -q 
<?php 
   function getInput($length = 255) { 
      $fr = fopen("php://stdin", "r"); 
      $input = fgets($fr, $length); 
      $input = rtrim($input); 
      fclose($fr); 
      return $input; 
   } 

echo '글자를 입력하세요 (10자 이내): '; 
$text = getInput(10); 
echo '입력하신 내용은 '.$text."입니다.\n"; 
?> 
신고
Name
Password
Homepage
Secret
prev"" #1 #2 next