2010-10-23 67 views
1

我在理解以下情形的安全問題時遇到問題。 我有一個網站,有用戶註冊,他們可以通過登錄創建事件。如果我以用戶身份登錄,我在像http://abc.com/index.php?page=edit&pageid=45網址。我看到這個頁面的其他登錄後聰明,它會顯示在日誌中記錄screen..but後,如果我改變從 http://abc.com/index.php?page=edit&pageid=45 網址 http://abc.com/index.php?page=edit&pageid=567如何處理url修改php/mysql

我能夠編輯page..which是一個安全問題。如何處理這個?有沒有一種最好的方式來處理URL中的任何編輯?請指導我。或者我怎樣才能通過腳本來處理這個問題......通過檢查諸如用戶名之類的東西以及它與頁面標識的關聯?

請指導我。

我在想,像不在URL中顯示pageid變量,並以某種方式將它從頁面1隱藏到頁面2 ..但我不知道如何完全做到這一點,或者如果它是一個很好的解決方案。

問候

回答

1

我認爲它的罰款通過了url中的pageid。所以接下來的事情是,確保用戶只能編輯他們的頁面。我會做的是將事件保存在表中的用戶ID。

然後在編輯頁面上,當你的事件的信息,你可以從登錄的人的用戶ID檢查用戶ID(從表中)。

像這樣的事情

// I don't know how your query works, but it would go here. 

// Then before you output the edit form, Add something like this 
if($_SESSION['user_id'] == $event_result['user_id']) { 
    // They match, show the form 
}else { 
    // they don't match 
    echo 'Excuse me, what are you doing?'; 
} 
+0

謝謝。我試過你說的話,它看起來很好。再次感謝。 – geej 2010-10-24 02:59:05

1

一種可能性是設置和使用$ _SESSION變量,以確定是否允許用戶訪問某個頁面。另一種可能性是使用發佈而不是獲取您的登錄表單。讓我知道我是否可以詳細說明。

編輯:

<form method="get" action="login.php" name="form"></form> 

VS

<form method="post" action="login.php" name="form"></form> 

登錄後,可以設置

<?php $_SESSION['user_id'] ?> 

,並在您使用的頁面的頂部,你可以有一個說法像

<?php if($_SESSION['user_id'] != $_POST['pageid']{//not valid} ?> 
+0

喜感謝Brandon的快速回復。你可以請我gudie我的登錄表單中的選項?這是用戶可以做的。 1)去現場。 2)點擊我的帳戶並登錄。3)向他顯示他/她創建的活動列表。 4)每個事件都可以選擇a)編輯。 2)刪除c)郵件吧!所以無論他們點擊了什麼,我都有事件ID和/或URL中的日期。所以用戶a已經登錄,如果他只是更改了url中的id,他可以編輯用戶b的事件......並按照郵件/刪除選項執行相同操作。請幫幫我。 – geej 2010-10-23 23:49:33

+0

使用POST而不是GET不會有多大幫助。任何自尊自愛的黑客都可以觸發POST請求。 – kijin 2010-10-23 23:51:20

+0

那麼有什麼選擇?將網址重寫有幫助? – geej 2010-10-23 23:52:51