2014-09-24 111 views
0

我有一個處理一個形式的PHP文件,稱它爲「形式,process.php」允許jQuery的訪問PHP文件,但拒絕一切

在JS文件我趕提交表單和使用jQuery .post()發送信息到這個PHP文件。

$('#form').submit(function(e) { 
    e.preventDefault(); 
    var form = $(this), 
     action = form.attr('action'); 

    $.post(
     action, 
     form.serialize(), 
     function(data) { 
      // display results on page 
     } 
    ) 
}) 

問題的第一部分:

什麼對我來說,以確保文件的形式,process.php的最佳方式,因此不能直接在www.website.com/form訪問-process.php,但jQuery仍然可以訪問它進行處理。問題的

第二部分:

在形狀process.php我使用用htmlspecialchars()剝離潛在HTML輸入到表單。有沒有其他主要安全問題,人們會建議解決?

+0

你可以做什麼,但也可以通過修改請求頭來繞過它。 – 2014-09-24 06:30:07

+0

「問題的第一部分」 - 沒有辦法保護,也沒有必要保護它。 「問題的第二部分」 - 這取決於你將如何使用這些數據。 – Cheery 2014-09-24 06:30:21

+0

@Cheery確定,因此,而不是拒絕訪問我應該檢查POST變量,如果沒有設置,然後顯示一些任意的消息?這些數據將用於使用PHPMailer生成電子郵件 – 2014-09-24 06:38:22

回答

0

回答第一個問題

有沒有辦法讓form-process.php只能從jQuery的訪問。您可以向執行form-process.php所需的POST數據添加散列,但潛在的攻擊者只能通過查看JavaScript代碼來讀取散列。您可以混淆您的代碼,但攻擊者仍然可以檢查通過AJAX發送的數據,並仍然可以獲取散列。 jQuery在客戶端執行,無論你如何設法保護你的代碼,它總是可能由攻擊者複製你的所有安全機制。

回答第二個問題

正確過濾數據是確保form-process.php的最佳途徑。分析您只能接受的數據類型,並創建僅接受此類數據的過濾器。看看這個函數:

http://php.net/manual/en/function.filter-input.php

http://php.net/manual/en/filter.filters.validate.php

當你想到一個字段包含URL,只接受的URL(FILTER_VALIDATE_URL)。當你想到的電子郵件地址,只接受電子郵件地址(FILTER_VALIDATE_EMAIL)等

當用戶必須登錄提交表單,你也可以,如果用戶在form-process.php文件登錄以及驗證。

相關問題