2012-10-09 52 views
0

不知何故,當使用Prototype的Form.serialize()來提交複雜的表單時,我總是覺得有些不確定這是否會在所有情況下都起作用。使用原型Form.serialize()有多安全?

我擔心的可能的問題是報價/字符串轉義問題,或者可能是提交了不尋常的字符代碼,任何可能導致進程混亂的問題。

所以,問題是:

是否安全(在客戶端),收集從形式使用原型的所有數據,然後通過AJAX發送到服務器,或是否有已知的任何瀏覽器以這種方式發送表單有困難  - 或者可能缺乏對它的支持?

+5

如果任何人都可以向我解釋爲什麼我的問題是,是downvoted它會幫助我瞭解它是如此的錯誤。那麼我可以避免在未來提出不適合社區的問題。謝謝。 – SquareCat

+1

我不是downvoter,但你的問題不是很清楚。我不知道你現在在問什麼。 –

+0

我明白了。我會盡力改善它。 – SquareCat

回答

1

儘管沒有我知道的瀏覽器內部使用Javascript來提交表單,但應詳細記錄表單的詳細信息。

完全按照協議編寫JavaScript表單提交代碼是完全可能的。另一方面,有經驗的編碼人員可能會錯過一些邊緣案例 - 如禁用複選框控件。

我不能說prototype庫,因爲我從來沒有使用它,但如果有一個表單沒有正確提交,或者服務器沒有提交表單,那麼它應該提交爲一個錯誤報告。

+0

所有的答案是有意義的,並且是內容豐富的。我選擇了你的,因爲你提供了另一個可能出現的問題的示例(禁用的複選框控件),並且通過明確指出,在使用Prototype進行多年的活動使用測試期間,您解決了這種情況,這樣的錯誤會顯示現在開始。 – SquareCat

1

我不知道你爲什麼最初被低估,這是一個有效的問題。

我認爲真正的答案是,安全方面確實發生在後端。可以序列化整個表單並通過請求發送它,但是您需要驗證您在另一側收到的信息。

舉例來說,你不希望這樣做(在另一種語言或同等): (假設$form是序列化形式)

foreach ($form as $key => $value) { 
    $object->$key = $value; 
} 

save($object); 
+0

感謝您的輸入。最初,我的問題是針對任何圖書館,也是一系列問題而不是具體問題。 – SquareCat