2016-09-22 11 views
1

私は試用版の質問を生成するウェブアプリを開発しています。セキュリティはプロジェクトで非常に重要です。試用のための質問の描画が行われると、アプリはそれのPDF文書を作成します。あなたが暗号化された文字列は、各ページのフッターに書かれて見ることができるようにPDF文書を一意にするにはどうすればいいですか?

public function Footer() 
{ 

    if ($this->logo != null) { 

     $this->Image($this->logo, 20, 278, 10, 10, 'PNG', '', 'C', false, 200, '', false, false, 0, false, false, false); 

    } 


    $this->SetY(-20); 


    $this->SetFont('helvetica', 'I', 8); 


    $this->Cell(0, 20, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M'); 

    $this->Cell(0, 20, date("d/m/Y"), 0, 0, 'R', 0, '', 0, false, 'T', 'M'); 

    if ($this->text_crypter != null) { // this is the encrypted string 


     $this->SetY(-7); 

     $this->SetFont('helvetica', '', 6); 
     $this->MultiCell(0, 7, $this->text_crypter, false, 'L', false, 0, '', '', true); 

    } 

} 

:私は、文書のフッターに暗号化された文字列を書き込みます。

enter image description here

は、しかし、独自に暗号化された文字列をコピーして別のドキュメントに貼り付けることが悪意のある人物が存在する可能性があるので、文書が私のアプリから構築されたを識別には十分ではありません。

だから私のアプリから来ることが証明されるpdf文書を作る手段は何ですか? (質問に対するコメントから収集...)

+6

アプリ専用の秘密鍵でデジタル署名してください。 – mkl

+0

あなただけが知っているmasterpwでpdfをロックしてください。誰かが引き続きID文字列をコピーすることができますが、pdfがマスタpwでロックされているので、pwシークレット/セキュアにしておけばそれを複製する方法はありません。 –

+0

@pheromix "それを行う方法" - 私はPHP PDF署名ライブラリに堪能ではない、私はJavaまたは.Netコンテキストのオプションを知っているだろう。 – mkl

答えて

2

一意文書は、あなたのアプリケーションは、デジタル署名を使用して文書に署名するべきであるあなたのアプリ、から構築されたことを識別するために、あなたのアプリにのみ利用可能な秘密鍵。

ÁlvaroGonzálezは、TCPDFを使用してデジタル署名を適用する方法の例としてExample 052 : digital signature certificationを指しています。

Ryan Vincentは、署名にはPDFドキュメントのハッシュと他の詳細が含まれていると説明しています。これがチェックされると、ドキュメントハッシュもチェックされます。署名を別の文書に転送することはできません。チェックは失敗することが確実です。

Adob​​e Readerで統合PDF署名を確認できます。実際には、証明書が署名検証ダイアログの署名者証明書であることを確認してください。

Ryan Vincentは、デジタル署名の一般的な仕組みについてはdigital signatureCryptography Digital signaturesチュートリアルを指摘しています。

特にPDF統合シグネチャの詳細については、情報セキュリティスタックエクスチェンジのthis answerとそこから参照されるドキュメントを参照してください。

関連する問題