我正在構建一個簡單的ToDo應用程序並與Facebook連接。使用AJAX將php變量添加到MySQL,但隱藏DOM中的值
我希望人們能夠創建一個新的待辦事項列表並將其註冊到數據庫(我使用Ajax)。我將在下面放置代碼和我的問題。
<a id="submit-list" href="#">
<div class="list-adder">
<input class="hidden" name="unique_url" id="uniqueUrl" type="text" value="<?php echo generateRandomString(); ?>" />
<input class="hidden" name="user_id" id="userId" type="text" value="<?php echo $_SESSION['FBID']; ?>" />
<input class="hidden" name="user_name" id="userName" type="text" value="<?php echo $_SESSION['FULLNAME']; ?>" />
<input type="text" placeholder="List Title" name="add_list" class="add_list" id="addList" />
<span id="submit_list">Add List</span> <i class="icon-plus"></i>
</div>
</a>
所以在這裏我把名單唯一的URL,標題和Facebook的用戶ID和全名
我送過來的細節,阿賈克斯,並從那裏到數據庫。一切都很完美。但是,可能存在安全問題。如果我檢查此表單,我會在源代碼中看到用戶標識和名稱,如以下截圖所示: http://image.prntscr.com/image/59dab8aca0694f89989ef1e0f59b9fc4.png two muppets http://image.prntscr.com/image/59dab8aca0694f89989ef1e0f59b9fc4.png 而且,如果編輯用戶標識或名稱,編輯後的數據將發送到數據庫。
有什麼辦法可以確保用戶的真實數據發送到數據庫而不是編輯的數據嗎?
謝謝。
如果是阿賈克斯,那麼你就可以攔截實際表單提交與JS代碼,添加/刪除/修改你想要的任何形式的值,然後做與實際數據提交的另一份。 –
只需在插入數據庫之前添加一些驗證?您已經知道user_id應該與$ _SESSION ['FBID']相同。如果它不告訴用戶數據無效。 – iyop45
@MarcB如果驗證是客戶端,那麼它仍然易受攻擊 – iyop45