2013-01-07 383 views
0

我對PHP相當陌生,這裏有一些我不知道該怎麼做。我應該儘可能隱藏腳本的腳本嗎?

對於我網站上的一些功能,我有一個php腳本,用於處理用戶點擊某些內容後的操作。即:

<a href='/php/delete.php?id=xxx'>delete</a> 

<form action='/php/handleregistration.php' method='post'></form> 

在我的代碼這些鏈接很容易看到你查看源代碼,但看着其他網站的代碼這類引用都更難找到。我想大多數是由相同類型的PHP腳本處理,但通過一些JavaScript/jQuery。

所以,我的問題是,我應該這樣做嗎?爲什麼和什麼是最好的方式來做到這一點?

回答

2

我不認爲你需要擔心。您應該始終編寫安全代碼,然後在對數據進行任何操作之前驗證並清理數據。 I.E:不要假設id = xxx是有效的,因爲某人可以手動鍵入知道腳本URL的內容。

您看到的大多數網站可能都使用框架或某種URL重寫。這使得URL看起來更好看(甚至腳本)。它雖然沒有增加太多的安全性,但這可以被視爲安全通過朦朧。它只會阻止不知道他們在輕鬆攻擊中所做的事情的人。它絕不會阻止熟練的攻擊者,這就是爲什麼安全應該在服務器端實現的原因。

編輯:

作爲一個側面說明,你可能需要使用POST進行刪除只是爲了防止一些不可預見的討厭的後果。正如蒂姆所說,你應該有一個刪除確認頁面,即使用戶登錄也是如此,這並不意味着他們在控制之中。

想象一個網站與一個iframe集到寬度= 0和高度= 0 SRC = HTTP://yoursite.com/php/delete.php ID = XXX

這將導致登錄的用戶可刪除他們的帳戶。 (或更改密碼,收取信用卡等),而他們不知情。

當然,將GET轉換爲POST並不能完全解決這個問題,但它在保護web應用程序中採取了許多步驟。

+0

我想你使用POST通過javascript/jquery/ajax進行刪除,而不是爲它設置一個表單?任何鏈接的最佳方式來做到這一點? – Juvlius

+0

正確,使用POST更安全,因爲瀏覽器具有域名原產地策略,這意味着我無法使用Javascript將數據從我的域名發佈到您的域名。沒有這樣的規則阻止來自另一個域的GET請求。就最好的方式而言,這是受到意見的影響,但看起來你有正確的想法。雖然AJAX並不要​​求你使用表單,但它最好的做法是創建表單作爲備份,並讓javascript監聽表單提交,並取消它以使用AJAX。這將使舊瀏覽器能夠使用該網站。 –

+0

這包括有一個現有的形式,並取消它使用ajax的javascript(防止默認)http://stackoverflow.com/questions/8690117/form-still-submits-on-preventdefault –

1

始終強制執行服務器上的安全性。最終,客戶端(網絡瀏覽器)所做的事情很少。

但是,您可能希望(強烈建議這麼做)使用不同的HTTP方法,如GET,POST,PUT和DELETE來更好地表示操作。這可能會略微影響您的標記/ JavaScript,例如把你的刪除按鈕放在表單中,這樣你就可以使用HTTP DELETE方法。

http://en.wikipedia.org/wiki/Representational_state_transfer

1

這沒有什麼區別。任何人都可以查看瀏覽器開發工具的「網絡」選項卡,並查看發送到服務器的內容。

無論您的代碼有多混亂,客戶端都沒有安全隱患。

取而代之,在服務器上驗證一切。

3

No. URIs是公開信息。必須將它們發送到瀏覽器,以便瀏覽器向它們發出請求。如果瀏覽器得到一些信息,用戶也可以獲得。當你需要調試東西時,混淆URI只會讓你的生活變得更加困難。

OTOH,你應該做的是:

  1. 讓別人編輯數據(包括測試,如「難道這用戶允許刪除這個事」)之前進行認證/授權。
  2. 使用POST請求(所以不是鏈接)爲改變服務器上的數據(如刪除的東西)請求
+1

+1爲大I字。想象一下,搜索引擎蜘蛛抓取所有這些基於GET的刪除鏈接。混沌! – Charles