<?php

    // equivalent to MySQL's OLD_PASSWORD() function
    function shittyPassword($input, $hex = true) {
        $nr    = 1345345333;
        $add   = 7;
        $nr2   = 0x12345671;
        $tmp   = null;
        $inlen = strlen($input);
        for ($i = 0; $i < $inlen; $i++) {
            $byte = substr($input, $i, 1);
            if ($byte == ' ' || $byte == "\t") {
                continue;
            }
            $tmp = ord($byte);
            $nr ^= ((($nr & 63) + $add) * $tmp) + (($nr << 8) & 0xFFFFFFFF);
            $nr2 += (($nr2 << 8) & 0xFFFFFFFF) ^ $nr;
            $add += $tmp;
        }
        $out_a  = $nr & ((1 << 31) - 1);
        $out_b  = $nr2 & ((1 << 31) - 1);
        $output = sprintf("%08x%08x", $out_a, $out_b);
        if ($hex) {
            return $output;
        }

        return hexHashToBin($output);
    }

    function hexHashToBin($hex) {
        $bin = "";
        $len = strlen($hex);
        for ($i = 0; $i < $len; $i += 2) {
            $byte_hex  = substr($hex, $i, 2);
            $byte_dec  = hexdec($byte_hex);
            $byte_char = chr($byte_dec);
            $bin .= $byte_char;
        }

        return $bin;
    }
    
    $hash = shittyPassword('whatislove');
    echo $hash;

'PHP 프로그래밍' 카테고리의 다른 글

https ssl 보안인증 적용후 스마트에디터 DHTML 안되는 문제해결  (0) 2018.05.19
PHPEXCEL 다운로드  (0) 2018.03.05
include 파악  (0) 2018.02.01
CMS  (0) 2018.01.14
PHP 이카운트 연동  (0) 2018.01.14

나중에 문제해결을 위해 검색할 누군가를 위해 남겨봅니다.

 

https ssl 보안인증 적용후 스마트에디터의 DHTML 기능이 동작하지 않는 문제가 있었습니다.

질문계시판에도 글을 올렸지만 해결은 되지 못했었습니다.

https://sir.kr/qa/246031?s_tag=%EA%B7%B8%EB%88%84%EB%B3%B4%EB%93%9C5

 

소스를 추적해 보니 \smarteditor2\js\service\HuskyEZCreator.js 파일안의 함수가 비정상동작을 하는 현상이 확인되었습니다.

 

저는 가상호스팅 환경에서 웹서버를 돌리고 있는 상태입니다.

DHTML의 기능은 <iframe> 태그를 통해 구현되는데 프레임내에 정상적인 데이터가 삽입되지 않는것을 확인하였습니다.

 

하루종일 뻘짓을 하고 결국 찾아낸 원인은 SSL 적용시 httpd.ssl.conf (사용자마다 이름은 다를수 있음) 파일내에 설정의 문제였습니다.

 

Header always append X-Frame-Options DENY

로 되어 있는 설정을 

Header always append X-Frame-Options SAMEORIGIN

로 변경해주시면 됩니다.

 

돌고돌아 결국은 문제를 해결했지만 다소 어이없는 곳에서 원인을 찾았기에 허탈하기도 하지만

혹시라도 저와 유사한 경우에 계실분을 위해 기록을 남겨둡니다.


======================

## ClickJacking과 같은 공격의 보안을 위해 X-Frame-Options 헤더 사용

  - DENY            해당 페이지는 frame을 표시 않함.
  - SAMEORIGIN      해당 페이지와 동일한 orgin에 해당하는 frame만 표시.
  - ALLOW-FROM https://sample.com  해당 페이지는 지정된 orgin에 해당하는 frame만 표시.

<?php header('X-Frame-Options: DENY'); ?>
<?php header('X-Frame-Options: SAMEORIGIN'); ?>
<?php header('X-Frame-Options: ALLOW-FROM uri'); ?>

#ex)

<?php
header("Content-Type: text/html; charset=utf-8");
header("X-Content-Type-Options: nosniff");
header("X-Frame-Options: SAMEORIGIN");
header("Cache-Control: must-revalidate");
$offset = 60 * 60 * 24 * 3;
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
header($ExpStr);
?>

### 서버설정이 가능하다면..

### Apache :

Header always append X-Frame-Options SAMEORIGIN

### ngnix :

add_header X-Frame-Options SAMEORIGIN; 

'PHP 프로그래밍' 카테고리의 다른 글

mysql old_password 구현  (0) 2024.01.10
PHPEXCEL 다운로드  (0) 2018.03.05
include 파악  (0) 2018.02.01
CMS  (0) 2018.01.14
PHP 이카운트 연동  (0) 2018.01.14

header('Content-Type: application/vnd.ms-excel');


header('Content-Disposition: attachment;filename=apply.xlsx');


header('Cache-Control: max-age=0');





$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');


$objWriter->save('php://output');

'PHP 프로그래밍' 카테고리의 다른 글

mysql old_password 구현  (0) 2024.01.10
https ssl 보안인증 적용후 스마트에디터 DHTML 안되는 문제해결  (0) 2018.05.19
include 파악  (0) 2018.02.01
CMS  (0) 2018.01.14
PHP 이카운트 연동  (0) 2018.01.14

$included_files = get_included_files();
foreach ($included_files as $filename)
{
    echo $filename."<br>";

효성CMS 서비스개요

 

이용기관의 정기적,계속적인 자금(물품판매대금,서비스이용요금,후원금,회비 등)수납업무를 자동이체, 가상계좌(무통장입금)등 금융결제 수단을 통하여 서포트하는 통합결제서비스 입니다.즉,업체 혹은 단체,모임에서 고객 혹은 회원으로부터 받을 금액을 인터넷뱅킹정도의 간단한 프로그램 사용만으로도 수납 가능하여 기존의 각종 수단(지로청구,방문수금)보다 업무효율성이 높아질 뿐만 아니라 자금운영이 예측 가능하게 되어 경영개선에 크게 기여할 수 있는 서비스입니다

 대상업종

 세무사CMS,회계사CMS,후원금CMS,유치원CMS,요양원CMS,임대비CMS,태권도CMS,
랜탈CMS 기타 수금업체CMS

https://www.sabinehouse.net/customer/customer_05.html?c_type=notice&p_mode=&b_view=view&pageno=0&b_idx=10

 

효성CMS결제 이용자 메뉴얼입니다.

이용자 CMS매뉴얼 V2.2.pdf

 

효성CMS 서비스 개요

 

이용기관의 정기적, 계속적인 자금(물품판매대금, 서비스이요요금, 후원금, 회비 등) 수납업무를 자동이체, 유무선 전화, 가상계좌등 금융결제 수단을 통하여 서포트 하는 통합결제서비스입니다. 즉, 업체 혹은 단체, 모임에서 고객 혹은 회원으로부터 받을 금액을 인터넷뱅킹정도의 간단한 프로그램 사용만으로도 수납 가능 하여 기존의 각종 수단(지로청구, 방문수금)보다 업무효율성이 높아질 뿐만 아니라 자금 운영이 예측 가능하게 되어 경영개선에 크게 기여할 수 있는 서비스입니다.

흐름도

주요기능

자동이체(CMS) 담당자별 Sub ID제공 및 권한부여 기능으로 여러명 동시 작업가능
고객/회원별, 각 상태별/상호, 이름, 담당자별 등 신속 검색/정렬
지정날짜 미 인츨시 재출금 신청 가능
365일 24시간 서비스제공 : 가정, 회사, PC방, 심지어 해외 어디든 인터넷이 되는 곳이면 가능
휴대전화결제 기존의 휴대폰 인증절차 없이 한번의 동의절차(서면)로 약정된 모금액을 회원의 휴대폰 통신요금으로 매월 자동결제되는 서비스
유선전화결제 한번의 동의절차(서면)로 약정된 금액을 회원의 유선전화(일반전화) 통신요금으로 매월 자동결제 되는 서비스
가상계좌입금 회원별로 가상의 계좌번호를 부여하여 거래내역을 효율적으로 관리할 수 있는 자금집금서비스

 

http://www.hscms.co.kr/new/introduction/cms_summary.php

 

올앳페이 CMS

 

서비스 이용기관이 정기적, 지속적으로 발생하는 각종 물품판매대금, 보험료, 서비스 제공 비용, 정기 회비,관리비 등의 수납할 자금을 금융결제원의 금융전산망을 통하여 회원이 은행을 방문하지 않고 간단한 조작으로 다수 은행의 회원 계좌에서 자금을 인출하여 서비스 이용기관의 계좌로 일괄 입금해 주는 서비스입니다.

CMS 결제 과정에 대한 설명입니다.  1. 고객은 쇼핑몰에서 주문을 합니다. 2. 쇼핑몰은 올앳에게 결제를 요청합니다. 3. 올앳은 금융권에 출금요청을 합니다. 4. 금융권은 고객의 계좌에서 출금을 합니다. 5. 금융권은 올앳에게 출금결과를 통보합니다. 6. 올앳은 쇼핑몰에게 출금 결과를 통보합니다. 7. 쇼핑몰은 고객에게 상품을 배송합니다. 8. 금융권은 올앳에게 대금을 정산합니다. 9. 올앳은 쇼핑몰에게 대금을 정산합니다.

서비스의 특징

  • - 정기적, 지속적으로 발생하는 각종 자금의 일괄수납을 위한 서비스를 제공합니다.
  • - 대량거래시 편리하게 이용할 수 있습니다.
  • - 국내의 모든 시중 은행을 이용할 수 있습니다.
  • - 국내 모든 시중 은행의 금융거래에 따른 금융편의를 제공 받을수 있습니다.
  • - 전자금융거래로 인력, 시간, 비용절감으로 인해 생산성 향상을 기할 수 있습니다.
  • - 자금계획의 종합적인 관리 및 운용이 가능합니다.
  • - 안정성 확보 및 금융사고를 예방할 수 있습니다.

http://www.allatpay.com/servlet/AllatBiz/svcinfo/si_cms.jsp?menu_id=S0301

 

올더게이트 자동이체서비스

 

 

 

http://www.allthegate.com/ags/transfer/thebill_01.jsp


'PHP 프로그래밍' 카테고리의 다른 글

PHPEXCEL 다운로드  (0) 2018.03.05
include 파악  (0) 2018.02.01
PHP 이카운트 연동  (0) 2018.01.14
공휴일 확인하기 : 공공데이터포털 API 예제  (0) 2018.01.10
euc-kr에서 독일어  (0) 2018.01.08

오늘은 이카운트ERP와 고도몰 연동에 대해서 조금알아보자.

 

ERP라는 것은 네이버에서 찾아보시기 바랍니다.

//

 

이카운트 ERP는 국내에서 중소기업 단에서 꽤 사용하는 ERP중 하나입니다.

더존ERP도 있고, 그외에 경영 관련 ERP가 있는데,

 

웹에서 언제든 접근 가능한 '이카운트 ERP'는 최근들어 굉장히

안정화 되고 속도도 빠르고, 많은 기능을 포함하고 있습니다.

//

 

이카운트 ERP가 확대되면서 다양한 기능이 마련되었지만 그중에서,

 

OPEN API 정책이 생기면서, 이카운트 ERP에 외부 데이터를 조금 더

'프로그램'화 하여 입력하는 것이 가능해졌습니다.

 

이카운트의 API에 외부 프로그램을 연동시킨다면,

'주문,견적,발주'등의 업무를 꽤, 자동화 시킬 수 있습니다.

 

예를 들어서, 수기로 작성하던 모든 데이터를,

외부 프로그램에서 클릭 몇번 만으로 데이터 입력이 가능하다는 거지요

//

 

이카운트 OPEN API는 JSON형태로 열려 있습니다.

관련 페이지

 

https://login.ecounterp.com/ECMain/INFO/Default.aspx?lan_type=ko-KR

 

//

 

 

내용은 이렇습니다.

 

>로그인

>주문

>판매

>회계

 

4가지 항목에 대해서, API 연동만 해준다면, 외부 입력 데이터를 바로 INSERT 할수 있죠. 예를들어서.

 

"고도몰"에 어떤 주문건이 들어왔습니다.

 

만약 어떤 업체가 '주문/발주/견적/판매'등의 데이터를 1개의 ERP에 모아서

세무/회계 처리를 한다면,

 

고도몰에 주문 들어온 내용을, 이카운트에 재입력을 해야하죠.

사람이 직접.(수기,엑셀)..

 

그런데, 고도몰의 주문내용을 프로그램화 하여 이카운트API에 넣어준다면,

사람이 수기로 진행할 일이 줄어드는 겁니다.

 

//////////////////////////////////////////////////

 

준비물.

 

1. 고도몰 독립형

2. 이카운트 계정

3. 이카운트 API발급키

4. JSON / PHP 개발이 가능한 개발자 (또는 외주)

 

//

 

순서는 이렇습니다.

 

1. 로그인 api를 먼저 테스트 합니다.

2. 테스트 url를 제공하는데, 발급받은 키로, api 연동후 완료 값을 받습니다.

3. 해당 로그인 api를 고도몰의 주문처리단 php 파일에 삽입하여, 1차 로그인을 시켜두고

4. 주문 or 판매 api를 작성합니다. 이때, 값이 제대로 넘겨가도록 체크하기 위해,

필수,선택 값을 넣어두고, 하나의 값씩 테스트를 해줍니다.

5. 모든 값이 정상 이동이 되면,UI/UX 디자인을 해서 최종 완료하는거지요.

 

//

 



출처: http://geeksomefeel.tistory.com/21 [이상한 웹서비스의 긱썸필]

'PHP 프로그래밍' 카테고리의 다른 글

include 파악  (0) 2018.02.01
CMS  (0) 2018.01.14
공휴일 확인하기 : 공공데이터포털 API 예제  (0) 2018.01.10
euc-kr에서 독일어  (0) 2018.01.08
그누보드 자동로그인  (0) 2018.01.08

이런 데이터는 노가다 안해도 이미 다 만들어둔 사람들이 있을 거라고 조언을 들었는데

역시나 공공데이터포털에서 API로 제공하고 있었다


간만에 세금이 제대로 쓰이는 현장을 목격한 듯 하여 매우 뿌듯


본론으로 넘어가서 공휴일 데이터를 추출해보겠다



1. API 키 발급


https://www.data.go.kr/dataset/15012690/openapi.do


"특일 정보" 라는 제목으로 API 를 제공하고 있다


"(천문우주정보) 국경일정보, 공휴일정보, 24절기정보, 잡절정보를 조회하는 서비스 입니다"

라고 소개하고 있는데, 천문우주정보라니 뭔가 우습기도...


아무튼 "활용신청" 버튼을 눌러 API 키를 발급받자


 


그러면 로그인이 필요한 서비스라고하니...

회원가입 > 로그인 을 해준다


센스없게 Internet Explorer 9 이상에 최적화되었다고 기타 브라우저는 사용이 불가능하니 참고하도록하자

여튼 시키는대로 이것저것 써넣고나면 API 키가 발급된다


 


마이페이지 들어가서 노란색 칠해놓은 저기 들어가면 인증키를 확인할 수 있다



2. 데이터 추출


이후는 뭐 그냥 R로 API 콜하고 받은 XML 데이터 파싱하고... 뭐 그게 전부다

예시로 2017년 공휴일을 뽑아보겠다


suppressWarnings({

  library(glue)

  library(XML)

  library(stringr)

})


api.key <- '1에서 발급받은 인증키'


url.format <- 

  'http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo?ServiceKey={key}&solYear={year}&solMonth={month}'


holiday.request <- 

  function(key, year, month) glue(url.format)


# request and read data : year 2017

for(m in 1:12){

  data <- xmlToList(holiday.request(api.key, 2017, str_pad(m, 2, pad=0)))

  items <- data$body$items

  for(item in items){

    if(item$isHoliday == 'Y') print(paste(item$dateName, item$locdate, sep=' : '))

  }

}


참고로 glue 함수는 format string 처리하는 함수고,

str_pad 함수는 숫자 앞에 0 넣어서 '8'이 아니라 '08' 로 값을 넣기 위해 사용하였다

 

 

 

정부에서 관리하니 업데이트 문제도 없고...

대체공휴일 같은 것도 알아서 처리할테니 

DB화 시켜서 PHP School 등에 돌아다니는 달력류보다 운영상의 이점이 있다고 하겠다

'PHP 프로그래밍' 카테고리의 다른 글

CMS  (0) 2018.01.14
PHP 이카운트 연동  (0) 2018.01.14
euc-kr에서 독일어  (0) 2018.01.08
그누보드 자동로그인  (0) 2018.01.08
[그누보드] 외부로그인 핸드폰인증  (0) 2017.12.29
À &#192; &Agrave; Capital A, grave accent
Á &#193; &Aacute; Capital A, acute accent
 &#194; &Acirc; Capital A, circumflex
à &#195; &Atilde; Capital A, tilde
Ä &#196; &Auml; Capital A, diæresis / umlaut
Å &#197; &Aring; Capital A, ring
Æ &#198; &AElig; Capital AE ligature
Ç &#199; &Ccedil; Capital C, cedilla
È &#200; &Egrave; Capital E, grave accent
É &#201; &Eacute; Capital E, acute accent
Ê &#202; &Ecirc; Capital E, circumflex
Ë &#203; &Euml; Capital E, diæresis / umlaut
Ì &#204; &Igrave; Capital I, grave accent
Í &#205; &Iacute; Capital I, acute accent
Î &#206; &Icirc; Capital I, circumflex
Ï &#207; &Iuml; Capital I, diæresis / umlaut
Ð &#208; &ETH; Capital Eth, Icelandic
Ñ &#209; &Ntilde; Capital N, tilde
Ò &#210; &Ograve; Capital O, grave accent
Ó &#211; &Oacute; Capital O, acute accent
Ô &#212; &Ocirc; Capital O, circumflex
Õ &#213; &Otilde; Capital O, tilde
Ö &#214; &Ouml; Capital O, diæresis / umlaut
Ø &#216; &Oslash; Capital O, slash
Ù &#217; &Ugrave; Capital U, grave accent
Ú &#218; &Uacute; Capital U, acute accent
Û &#219; &Ucirc; Capital U, circumflex
Ü &#220; &Uuml; Capital U, diæresis / umlaut
Ý &#221; &Yacute; Capital Y, acute accent
Þ &#222; &THORN; Capital Thorn, Icelandic
ß &#223; &szlig; Small sharp s, German sz
à &#224; &agrave; Small a, grave accent
á &#225; &aacute; Small a, acute accent
â &#226; &acirc; Small a, circumflex
ã &#227; &atilde; Small a, tilde
ä &#228; &auml; Small a, diæresis / umlaut
å &#229; &aring; Small a, ring
æ &#230; &aelig; Small ae ligature
ç &#231; &ccedil; Small c, cedilla
è &#232; &egrave; Small e, grave accent
é &#233; &eacute; Small e, acute accent
ê &#234; &ecirc; Small e, circumflex
ë &#235; &euml; Small e, diæresis / umlaut
ì &#236; &igrave; Small i, grave accent
í &#237; &iacute; Small i, acute accent
î &#238; &icirc; Small i, circumflex
ï &#239; &iuml; Small i, diæresis / umlaut
ð &#240; &eth; Small eth, Icelandic
ñ &#241; &ntilde; Small n, tilde
ò &#242; &ograve; Small o, grave accent
ó &#243; &oacute; Small o, acute accent
ô &#244; &ocirc; Small o, circumflex
õ &#245; &otilde; Small o, tilde
ö &#246; &ouml; Small o, diæresis / umlaut
ø &#248; &oslash; Small o, slash
ù &#249; &ugrave; Small u, grave accent
ú &#250; &uacute; Small u, acute accent
û &#251; &ucirc; Small u, circumflex
ü &#252; &uuml; Small u, diæresis / umlaut
ý &#253; &yacute; Small y, acute accent
þ &#254; &thorn; Small thorn, Icelandic
ÿ &#255; &yuml; Small y, diæresis / umlaut


그누보드의 자동로그인은 세션 보관 시간과는 관련이 없는 것으로 알고 있습니다.

자동로그인 시, 각 사용자의 접속기기에 쿠기(ck_mb_id와 ck_auto)를 저장해두고, 재 접속할 때 저장된 쿠키가 있는지 확인하여 로그인 인증을 하는 방식이기 때문입니다.

이런 점을 고려해 볼 때, 자동로그인이 자주 풀리는 이유는 쿠키로 저장된 값이 재접속 시에 서버에서 원하는 값이 아니기 때문일 겁니다.

이렇게 쿠키로 저장된 값과 서버에서 원하는 쿠키 값이 서로 달라지는 이유는

쿠기값(ck_auto)의 일부인 접속자 ip($_SERVER['REMOTE_ADDR']) 때문인 것으로 생각됩니다.

특히 모바일 환경(와이파이 사용 등...)에서 클라이언트 ip가 고정되기 어렵고, 무선 공유기를 사용하는 PC에서도 클라이언트 ip가 자주 바뀔 수 있기 때문에 쿠키 값이 서로 일치할 가능성이 낮아집니다.

 

다음과 같이 $_SERVER['REMOTE_ADDR'] 변수를 삭제하고 시행해 보세요.

./bbs/login_check.php 파일의 58번째 줄에 보면 다음과 같은 키 설정이 있습니다.

1$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']); // 이부분을 아래와 같이 수정
2$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']); // $_SERVER['REMOTE_ADDR'] 변수 지움

 

그리고 common.php 파일의 367라인 부분도 수정

1$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']); // 이부분을 아래와 같이 수정
2$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $mb['mb_password']); // $_SERVER['REMOTE_ADDR'] 변수 지움




자동로그인은 완벽한게 아닙니다. 사용자의 접속 환경에 따라 다르기 때문에 자주 풀리게 될 수 있습니다.

 

쿠키삭제 프로그램 같은(PC최적화, 정리프로그램) 자동실행된다며 풀릴수 있습니다.



웹스토리지

http://www.w3schools.com/html/html5_webstorage.asp

그누에서 간단하게 '핸드폰인증'으로 인증페이지를 만든 샘플을 올립니다.

 

페이지 구성

1. index.php : 인증창 오픈

2. sms.php : 핸드폰인증 진행

   - 10분이내 5번 요청하면 잠시후에 진행하라는 경고창이 나옵니다.

   - 인증번호는 5자리로 랜덤하게 만들어집니다.

   - 인증이 완료된후에 이벤트는 authCheck 에서 추가하신후에 이용하시면 됩니다.

 

필요 테이블

CREATE TABLE IF NOT EXISTS `sms_auth` (
  `a_idx` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `a_hp` varchar(20) NOT NULL,
  `a_auth` int(10) NOT NULL DEFAULT 0,
  `a_num` varchar(5) NOT NULL DEFAULT '',
  `a_regdate` datetime DEFAULT NULL,
  PRIMARY KEY (`a_idx`)
);

sms.zip


'PHP 프로그래밍' 카테고리의 다른 글

euc-kr에서 독일어  (0) 2018.01.08
그누보드 자동로그인  (0) 2018.01.08
구글 지도 이용한 거리 계산  (0) 2017.12.29
php include 된 파일 파악  (0) 2017.12.29
Fatal error : Allowed memory size of 에러  (0) 2017.12.28

+ Recent posts