IPN을 사용하여 "지금 구매"(내 PayPal 계정에 저장되지 않음) 동적 버튼을 구현했으며 정상적으로 작동합니다 (예!).페이팔 - 암호화되지 않은 버튼 보안
누군가가 방화범 (예 : 금액)을 변경하면 내 IPN 청취자가 금액에 문제가 있다고 말하는 경우에도 거래가 paypal에도 유효하기 때문에 그의 보안에 대해서는 의문을 품습니다.
제 질문은 "php/codeigniter 라이브러리로 양식을 암호화 할 수 있습니까?"
IPN 리스너에서 금액을 확인하려했으나 paypal에서의 트랜잭션이 올바르게 계속되고 IPN에서 차단되지 않았기 때문에. 파이어 버그 (또는 유사한 소프트웨어)을 가진 사람들이 그들을 편집 할 수 있도록 동적으로 버튼을 암호화 할 수 있습니다
private function isVerifiedIPN(){
$req = 'cmd=_notify-validate';
$posts = $this->input->post();
foreach ($posts as $key => $value){
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
if($this->config->item('SIMULATION'))
$url = $this->config->item('SIMULATION_URL');
else
$url = $this->config->item('PRODUCTION_URL');
if(!$this->isVerifiedAmmount() ||
!$this->isPrimaryPayPalEmail() ||
!$this->isNotProcessed()){
$req = '';
}
$header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Host: $url\r\n"; //443
$header .= "Content-type: application/x-www-form-urlencoded\r\n";
$header .= "Content-length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ("ssl://$url", 443, $errno, $errstr, 30);
if (!$fp)
{
$this->sendReport("Errore connessione socket");
return FALSE;
}
else
{
fputs ($fp, $header . $req);
while (!feof($fp))
{
$res = fgets ($fp, 1024);
if (strcmp($res, "VERIFIED") == 0)
{
// transizione valida
fclose ($fp);
return TRUE;
}
else if (strcmp ($res, "INVALID") == 0)
{
$this->sendReport('Transizione non valida');
fclose ($fp);
return FALSE;
}
}
}
}
감사합니다 yoda! 그러나 당신은 링크를 잊어 버렸습니다! : P 고마워요 :) –
그건 나에게 특별했습니다. 그들은 지금 거기에있다. – Yoda