2012-10-04 50 views
2

我正在使用簡單的服務0123'在在線發票上創建PDF版本。現在,客戶端必須登錄才能看到在線版本,但結果是,api服務無法訪問它。我如何檢測到pdf服務正在訪問該站點,並因此無需密碼?通過api檢測對密碼保護區域的訪問

我以爲$ _Server ['http_referrer']會這樣做,但我沒有任何運氣。我甚至不確定變量是什麼,所以無論何時頁面被訪問,我都有一個var_dump($ _ Server)通過電子郵件發送給我。當我進入頁面時,它發送的很漂亮,但是當pdf生成時,沒有運氣。

任何想法?

感謝您的幫助!

回答

4

您需要識別用戶。該服務的唯一方法似乎是將某些內容附加到pdf URL(GET參數)。

因此,在服務器端創建一些祕密,使用它簽署用戶標識,將其附加到impdf URL並根據請求使用您的祕密進行解析。您將最終獲得可用於授權的用戶標識。

+0

可能值得一提的是,附加的數據可能應該是一次性密碼,否則只要用戶當前的會話存在就一直存在。 –

+1

隨時編輯我的答案:)這就是所有關於。 –

3

你試過看IP地址嗎?

該服務可能從相同的IP地址(或地址範圍)訪問站點。如果是這樣的話,那麼你所要做的就是檢查請求的遠程IP地址,我相信這是PHP的$_SERVER['REMOTE_ADDR']

我還應該提到IP地址ACLs並不完美,因爲IP地址可能是spoofed。除非絕對控制(或保證安全)離開和進入網絡的數據包,否則他們可能不應過分依賴安全性。也就是說,它們很可能足以滿足您的「簡單」安全要求。

HTTP referer幾乎是trivial to circumvent。因此,它對於安全來說不夠可靠,應該以一粒鹽來進行。

0

我不會去任何上述建議。基本上他們都會降低你的安全措施。

我會使用一個API,如PDFmyURL的API,它允許您通過一系列標準方式直接登錄。這確保您不必構建任何新東西。

直接鏈接到段上的訪問安全區:PDFmyURL API documentation

披露:我爲Kaiomi,該公司擁有這項服務工作。