2011-03-20 4 views
0

나는 클라이언트가 상품에 대해 지불하는 트랜잭션 웹 사이트를 운영하고 있습니다. 지금 결제 프로그램 (PP) 회사 웹 페이지를 사용하여 결제를 처리하고 있습니다. 즉, 고객이 PP 서버로 리디렉션되고 지불이 완료되면 내 사이트로 리디렉션됩니다. 큰 단점은 PP 페이지를 사용자 정의 할 수 없다는 것입니다.좋은 보안 웹 지불 아키텍처는 무엇입니까

이제 웹 사이트에서 직접 지불을 처리하고 싶습니다. 모든 지불 데이터를 지불 프로세서에 게시하면 응답이 반환됩니다. PCI를 준수해야한다는 것을 이미 알고 있습니다. 내 웹 사이트는 RESTeasy WebServices와 Java 서버를 호출하는 AJAX를 사용하여 수행됩니다.

이제 내 질문은 자바 스크립트를 사용하여 클라이언트 측의 모든 필드를 확인하거나 서버의 모든 것을 스윙하고 작업을 수행해야합니까? 클라이언트에서 FORM을 사용하거나 서버에서 HttpUrlConnection을 사용하여 지불 프로세서에 직접 POST해야합니까? 이 작업을 수행하기위한 벤치 마크는 무엇입니까? 나는 많은 PHP 예제를 발견했지만 불행히도 PHP를 배울 시간이 없습니다.

감사

+1

클라이언트에서만 유효성 검사를 절대로하지 마십시오! (특히 결제 시스템의 경우 ...) 자바 스크립트를 사용하여 클라이언트에서 유효성 검사를 수행하는 것은 순전히 사용자 편의를위한 것이며 쉽게 피할 수 있습니다. – Cameron

+0

@Cameron : 감사합니다 카메론,하지만 지금은 코멘트에 게시 한 이후 어떻게 대답 할 수 있습니까? – Alain

+0

@ 카메론 : 감사합니다. 적어도, 나는 당신의 의견에 투표를했다. 나는 그것이 내가 지금 할 수있는 최선이라고 생각한다! – Alain

답변

1

결제 프로세서에 직접 POST 데이터를 보내거나 신용 카드 정보를 수집할지 여부는 지불 프로세서에 따라 다르며 신용 카드 페이지에 수집 한 정보 중 일부를 저장하려는 경우 ( 저장하지 않음) 신용 카드 정보, 필요한 경우 마지막 4 자리 숫자 만 저장하십시오.)

결제 프로세서에 직접 양식을 게시하는 것이 가장 간단합니다. 이것은 또한 신용 카드 정보가 시스템을 통과하지 못하기 때문에 PCI 레벨 4와 호환 될 필요조차 없다는 것을 의미합니다. 당신이 청구서 주소 또는 신용 카드 번호의 마지막 네 자리 숫자를 저장하려면, 다른 한편으로

http://www.pcicomplianceguide.org/pcifaqs.php#2

을 - 또는으로 보낼 영수증에이 데이터를 삽입 할 : 여기를 참조하십시오 전자 메일 - 신용 카드 페이지의 정보를 수집하는 자체 서버 측 코드를 작성하고 HttpUrlConnection을 사용하여 지불 프로세서에 데이터를 POST해야합니다. 지불 프로세서가 API를 제공하는 경우이를 사용할 수도 있습니다.

어느 경우 든 지불 페이지가 인 경우 만 SSL을 통해 볼 수 있어야합니다. Java 웹 응용 프로그램에서이 작업을 수행 할 수있는 web.xml 전송-보증 항목을 사용할 수 있습니다

<security-constraint> 
    <user-data-constraint> 
    <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
    <web-resource-collection> 
    <url-pattern>your_payment_page.jsp</url-pattern> 
    </web-resource-collection> 
    </security-constraint> 

이 있는지 확인하는 사용자가 일반 HTTP에서 결제 페이지에 액세스하는 경우에도 응용 프로그램 서버는 것이다 HTTPS로 리디렉션합니다.

(내가 처리 한 지불 프로세서의)이 페이지는보기의 프로세서 점에서, 좀 더 많은 정보를 가지고 : 귀하의 답변에 대한 당신의 모든

http://wiki.usaepay.com/developer/transactionapi

1

지적 사람들이 당신의 클라이언트 코드를 가지고 수정할 수 있기 때문에, 클라이언트에서만 확인할 수 없습니다. 또한 사용자가 볼 수 없도록하려는 계정 정보를 제공해야합니다. 서버가 요청을 확인하고 처리해야합니다.

이것은 매우 복잡한 작업입니다. SSL (HTTPS)을 통해 페이지에 액세스해야하며 신용 카드 프로세서에 안전하게 액세스해야합니다.

서버 측 코드에서 몇 가지 기본 유효성 검사를 수행 할 수 있습니다. http://www.blackbeltcoder.com/Articles/ecommerce/validating-credit-card-numbers을 확인하십시오.

그 이상으로 프로세서와 API를 사용하면 실제로 사용할 수 있습니다. 그들의 명세에 맞는 코드를 작성해야합니다.

0

감사합니다. 마지막으로, 그것은 훨씬 더 복잡하며 웹 페이지 디자인 목적으로 지불 데이터를 수집하는 일은 너무 큰 책임입니다. 결제 페이지를 수정하여 결제 처리 웹 페이지로 리디렉션되어 결제가 완료됨을 알립니다. 내가 가지고있는 것의 종류. 이것은 그들과 나를 위해 더 안전합니다.

다시 한번 감사드립니다.

관련 문제