我使用DOMPDF讓Web應用程序的用戶根據他們完全控制的HTML模板創建PDF發票。可以安全使用dompdf + file_get_contents嗎?
我們已經在我們的服務器上禁用了file_get_contents(),但是如果我們想要的話可以啓用它。
我的問題是,file_get_contents()是否可以安全地用於允許使用DOMPDF進行渲染(以及遠程或本地?加載圖像)?
這裏有什麼安全隱患?
我使用DOMPDF讓Web應用程序的用戶根據他們完全控制的HTML模板創建PDF發票。可以安全使用dompdf + file_get_contents嗎?
我們已經在我們的服務器上禁用了file_get_contents(),但是如果我們想要的話可以啓用它。
我的問題是,file_get_contents()是否可以安全地用於允許使用DOMPDF進行渲染(以及遠程或本地?加載圖像)?
這裏有什麼安全隱患?
這裏確實沒有足夠的信息來回答確定啓用file_get_contents()
在您的系統上是否安全。爲此,我們必須知道系統上還有其他PHP應用程序和/或該功能是否在其他地方以及以何種方式使用。這就是說,如果你只考慮DOMPDF本身如何使用file_get_contents()
你沒有理由擔心。 DOMPDF使用該函數來引入任何外部引用的文件(即css或圖像)的內容。 DOMPDF明確了它如何處理任何內容,因此用戶不應該因爲內容是來自HTML文檔的外部而不應該造成任何額外的傷害。
缺少利用file_get_contents()
我不相信啓用該函數會突然使DOMPDF不安全。典型的擔憂是該功能的使用方式會使其容易受到惡意活動(如信息泄露攻擊)的影響。這是DOMPDF過去容易受到的問題,已經解決了0.5.2(只要您的安全配置...例如,不要將DOMPDF_CHROOT
設置爲/
)。
感謝您指出。我們擔心在我們的服務器上打開file_get_contents(),因爲這會給黑客提供一種啓動信息披露攻擊的方式,正如您所提到的。我們打開該功能的唯一原因是能夠在DOMPDF中使用圖像。你需要更多信息嗎? – Jorre 2012-03-07 15:42:48
如果你沒有在其他地方使用該功能,並且你正在使用dompdf 0.5.2或更高版本,那麼我相信你應該沒問題。如果您沒有使用dompdf.php,您可以刪除該文件以獲得更高的安全性,因爲這是早期版本dompdf中信息披露的來源。 – BrianS 2012-03-07 15:45:10
感謝Brian,如果黑客可能試圖在我們的服務器上嘗試使用某種PHP shell進行訪問後使用該功能,那該如何呢?我們並沒有在其他地方使用這個功能,而是擔心在我們的機器上打開這個功能 – Jorre 2012-03-08 08:01:59