我試圖防止xss注入。 所以之前我提交表單,一個JavaScript函數被調用JavaScript字符串替換等效於PHP?
function validatefield(id) {
var description = document.getElementById(id).value;
description = description.replace(/[\"\'][\s]*javascript:(.*)[\"\']/gi, "");
description = description.replace(/script(.*)/gi, "");
description = description.replace(/eval\((.*)\)/gi, "");
document.getElementById(id).value=description;
}
我wonderng如果有一種方式插入的MySQL之前,做在PHP中一樣嗎?如果他們繞過了validatefield函數。
謝謝
將此javascript代碼移植到php並不是防止XSS的好策略。有些方法可以將JavaScript注入到您的邏輯沒有涉及的HTML中,例如。 'onclick'屬性。正確的(而且更簡單!)的方式是在輸出任何html上下文之前將用戶提交的數據包裝在'htmlspecialchars()'中。 – Asaph 2010-03-01 04:20:46
但是如果你想允許一些HTML,htmlspecialchars是不夠的。 – 2010-03-01 04:23:03
@Matthew Flaschen:當然是對的。雖然我沒有得到印象,但海報通過他的表格專門收集了HTML。它沒有提到問題的任何地方。在收集HTML數據的情況下,我會採取白名單方式,並去除所有未經批准的標籤和屬性。 – Asaph 2010-03-01 04:26:05