OpenSSL for HTTP 게시판에 적용하는 방법 좀 알려주세요.
본문
안녕하세요.
아파치님께서 올려주신 "OpenSSL for HTTP 에러 수정판"을 설치했습니다.
원본은 letsgolee님의 "OpenSSL for Http-보안서버기능을 하는 암호화 프로그램" 입니다.
http://sir.co.kr/bbs/board.php?bo_table=g5_plugin&wr_id=14
홈페이지에 보안서버를 구축하고 싶어서 OpenSSL과 스마일서브 보안서버 두개를 설치해봤는데
둘 다 홈페이지에 적용하니 잘 작동이 됩니다.
그런데 전 이걸 게시판에도 적용하고 싶습니다.
게시판에 필드를 추가해서 개인정보 입력하는게 더 있어서요.
댓글에 나온 설명을 참고해도 기본지식이 없는 저로써는 되지를 않습니다.
이거 성공하신 분 계신거 같은데 설정 방법 아시는분 계시면 답변 좀 부탁드립니다.
감사합니다.
답변 2
"OpenSSL for HTTP" 를 게시판에 적용하는 일을 너무 어렵게만 생각하실 이유가 없습니다.
어차피 "OpenSSL for HTTP" 의 기능이 클라이언트가 서버로 정보를 넘길 때 암호화하는 것이기 때문에
이 기능이 잘 작동되도록 하면 되는 것입니다.
그런 면에서 letsgolee님이 공개해 주신 "OpenSSL for HTTP" 프로그램은 매우 훌륭한 도구입니다.
먼저, common.php 파일에
-----------------------
include_once G5_LIB_PATH.'/http_openssl/http_openssl.lib.php';
http_openssl_load();
-----------------------
이런 식으로 http_openssl 로드되어 실행되고 있다고 전제할 때
skin/member/basic/login.skin.php 에 적용된 것을 그대로 응용하면 됩니다.
암호화하길 원하는 게시판 스킨의 write.skin.php 파일을 열어서 상단에 아래와 같이 추가합니다.
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
http_openssl_simple_prepare(); //추가한 코드
그리고 하단의 자바스크립트 부분 fwrite_submit(f) 함수 내용의 맨 아래 부분에
return true; 를 아래와 같이 수정합니다.
//return true; //이부분 대신 아래부분을 사용함
<?php http_openssl_js_form_submit('f'); ?>
참고로 skin/member/basic/register_form.skin.php 에 적용된 것처럼
view 페이지나 수정하는 페이지에 나타나는 정보도 암호화할 필요가 없다면 위와 같이 하면 됩니다.
위와 같이 하면 write_update.php 에서 해당 정보를 저장할 때 필요한 데이타는 common.php 파일의 http_openssl_load(); 함수에서 알아서 다 복호화해 줍니다.
정말 잘 만든 프로그램이죠.^^
위에서도 말했듯이 클라이언트에서 서버로 넘어가는 정보를 암호화하는 것이 "OpenSSL for HTTP" 의 주된 역할임을 고려할 때 수정할 때나 view 페이지에서 정보를 열람하는 부분까지 암호화할 필요는 없다고 생각합니다.
그리고 개인적으로는 letsgolee님이 공개해 주신 "OpenSSL for HTTP" 프로그램이 응용해서 적용하기에 더 편리하고 좋은 것 같습니다.
예제로 아래의 링크는 제가 지인에게 만들어준 상담폼인데 "OpenSSL for HTTP" 프로그램이 적용되어 있습니다. 소스보기를 하시면 확인하실 수 있습니다.
!-->!-->네, 맞습니다.
어차피 "OpenSSL for HTTP" 의 주된 기능이 클라이언트가 입력한 정보를 암호화하여 서버로 넘기고 이것을 복화하 하는 것이기 때문에 글 수정페이지에서 해당 정보를 굳이 암호화하여 보여줄 필요는 없습니다.
그러므로 http_openssl_simple_prepare(); 기능만으로도 충분하다고 생각합니다.
masahide님이 작업하신 내용이 letsgolee님께서 알려주신 내용과 맞다면 그대로 쓰시면 됩니다.
참고로 암호화된 데이타가 제데로 넘어와 복호화되고 있는지 확인하시려면
common.php 파일에 아래와 같이 $test_post = $_POST; 를 추가하신 다음
$test_post = $_POST;
include_once G5_LIB_PATH.'/http_openssl/http_openssl.lib.php';
http_openssl_load();
./bbs/write_update.php 파일 상단에 $test_post 와 $_POST 를 구분해서 비교해 보세요.
//암호화된 데이타
foreach($test_post as $key=>$val){
echo $key.':'.$val.'<br>';
}
echo '<br><br>';
//복호화된 데이타
foreach($_POST as $ky=>$vl){
echo $ky.':'.$vl.'<br>';
}
exit;
!-->!-->