1
很晚到遊戲 -編碼一個對象而不是每個屬性
我剛剛開始思考我的網站上的XSS。不幸的是,在幾個地方我創建了我通過Ajax傳遞的對象:
var params = {};
params.firstName = $("#firstName").val();
params.lastName = $("#lastName").val();
$.ajax({url:url, data:params}).done();
任何人都可以用可執行JS編寫。現在,從我讀過,我可以輕鬆地做這個改變這種情況:
var params = {};
params.firstName = encodeURIComponent($("#firstName").val());
params.lastName = encodeURIComponent($("#lastName").val());
$.ajax({url:url}, data:params).done();
但不是通過每一個創建對象和encodeURIComponent方法包裝各個領域的地方去---有什麼辦法直接在參數上而不是在每個屬性上直接轉義字符?
感謝您的任何有用的提示。
更新:當內容類型:application/x-www-form-urlencoded; charset = UTF-8然後表單數據被自動編碼。
我認爲jQuery的實際執行此爲您 – aw04
出於安全雖然,逃避所有這些字符的服務器 - 方,而不是客戶端。在客戶端上轉義它使得XSS變得更加困難,但它仍然完全可能並且不那麼困難。 – nicovank
@nicovank - 是的,非常好的一點。所有的端點也將得到保護。我只是把它作爲一個額外的措施,因爲我認爲UI應該對XSS採取一些措施。 – fumeng