2016-06-09 66 views
0

我正嘗試使用源自輸入的變量通過javascript發送SQL查詢。在此輸入,字符,例如'和「與人相處,可以輸入使用Javascript中的特殊字符跳轉SQL查詢

這裏是我的腳本函數是什麼樣子:

function insertJobDesc (r) { 
     rowid=r; 
     var qty = document.getElementById('Qty' + r).value; 
     var desc = document.getElementById('Desc' + r).value; 
     desc = desc.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, '"&quot;"').replace(/'/g, '"&#039;"'); 

     sendAsync("editDatabase.php?sql=UPDATE+jobdesc+SET+qty="+qty+",+description='"+desc+"',+rowID="+rowid+"+WHERE+id="+rowid+"+AND+jobID="+jobID); 
    } 

的價值‘的例子,我會想說明’發送是: 80-0234-1 6'5「GATE 所以它是數字,字母和特殊字符的組合。 我試圖替換它們中的每一個,但沒有成功。

任何想法?

+0

這是危險的,愚蠢的。你正在公開數據庫信息,允許任何人刪除你的整個表。 SQL查詢沒有在瀏覽器中公開的業務...在服務器上使用僅發送的表單值進行編譯,並確保驗證發送的值。 – charlietfl

+0

@charlietfl我不太關心任何注射問題,因爲該網站只有少數幾個人在本地網絡上使用。 – Eksepshon

+0

仍然沒有理由這樣做。有一天,一個人可能會心存不滿。不要在瀏覽器和服務器上進行簡單的編碼查詢,而且您也無法通過這種方式驗證輸入 – charlietfl

回答

0

使用encodeURIComponent方法()

function insertJobDesc (r) { 
    rowid=r; 
    var qty = document.getElementById('Qty' + r).value; 
    var desc = encodeURIComponent(document.getElementById('Desc' + r).value); 

    sendAsync("editDatabase.php?sql=UPDATE+jobdesc+SET+qty="+qty+",+description='"+desc+"',+rowID="+rowid+"+WHERE+id="+rowid+"+AND+jobID="+jobID); 
} 

免責聲明:永遠不要做這樣的事......

+0

這個答案的最好的部分是免責聲明,所以這是一個絕對的答案。 – Eksepshon