我參與到其中有下面的代碼相當於一個javascript框架:下面的JavaScript是否可以安全地避免強制執行代碼?
eval("'" + user_input.replace(/'/g, "'") + "'");
我知道這是可怕的 - 不用勸我。我想知道的是,我可以在這裏注入任意代碼嗎?
乍一看,user_input.replace("'", "'")
似乎可以防止我脫離弦線。不過,我可以通過換行符,例如\nalert(123)\n
,但是結果總是一個語法錯誤,例如,
'
alert(123)
'
實際上是否有一個用於代碼注入的向量,除了引起語法錯誤?
我幾乎可以保證有一些你可以在這裏做的注射...... – Markasoftware
每次你使用'eval()',你可能會認爲它是不安全的,如果評估用戶輸入,你可能犯了很多其他的錯誤,這是黑客夢寐以求的。 – adeneo
你不需要說服我。我只是想爲實際攻擊的開發者提供一個很好的例子。 – bluepnume