Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 停止通过闪存访问http资源_Flash_Security_Http_Cross Domain_Web - Fatal编程技术网

Flash 停止通过闪存访问http资源

Flash 停止通过闪存访问http资源,flash,security,http,cross-domain,web,Flash,Security,Http,Cross Domain,Web,比如说,我的HTTP服务器上有一些音频流资源 我设计了一个flash播放器来播放它 我注意到有些人使用第三方flash播放器播放音频 他们的玩家将尝试重新加载该资源,直到其可用。这给我的HTTP服务器带来了很大的压力。为了阻止他们攻击我的服务器,我只允许从我的flash播放器访问。奇怪的是,我认为在这种情况下,flash player应该在加载我的音频资源之前先检查crossdomain.xml,但他们没有。他们只是加载声音并播放。甚至没有corssdomain.xml。我试着添加一个,但

比如说,我的HTTP服务器上有一些音频流资源

我设计了一个flash播放器来播放它

我注意到有些人使用第三方flash播放器播放音频

他们的玩家将尝试重新加载该资源,直到其可用。这给我的HTTP服务器带来了很大的压力。为了阻止他们攻击我的服务器,我只允许从我的flash播放器访问。奇怪的是,我认为在这种情况下,flash player应该在加载我的音频资源之前先检查crossdomain.xml,但他们没有。他们只是加载声音并播放。甚至没有corssdomain.xml。我试着添加一个,但效果不太好

<?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="*.example.com"/>
</cross-domain-policy>

那么flash播放器出了什么问题?为什么不检查crossdomain.xml就可以访问资源

在某些情况下,flash player不必检查crossdomain.xml吗?如果是,我如何阻止第三方玩家(来自不同域)访问我的资源


谢谢。

如果你真的想解决这个问题,我会调查对你的资源进行真正的保护。即,
http://example.com:7000/foo.mp3
不应直接访问。您可以将它放在服务器后面,该服务器强制执行类似于一次性密钥的内容,因此需要以
http://example.com:7000/foo.mp3?key=1234
,其中
1234
是一个随机键。加载flash应用程序的web服务器将生成此密钥,并将其作为变量传递到flash应用程序中,然后在为您的媒体内容提供服务的服务器(可能是同一服务器)上授权此密钥。特别是如果资源服务器和HTML服务器是相同的,这也可以通过HTTP cookie轻松完成

现在,这不会阻止有人加载您的HTML以获得授权密钥。但是,如果您将密钥正确地嵌入到HTML中,它至少会起到很大的威慑作用。(如果您需要对这个HTML页面进行身份验证和授权,您几乎可以涵盖所有内容。)


使用
crossdomain.xml
或任何其他类似方法都会将资源的安全性置于客户端而不是服务器的控制之下,这绝不是一个好主意。

Sound
类发出的请求实际上会忽略跨域策略。这是一个老问题,Adobe很久没有修复过。当您只需要向服务器发送数据,但不需要任何响应时,通常会使用此“功能”。也就是说,播放机将阻止您从不提供策略文件但仍将发送请求的服务器获得响应

现在,如果您试图保护自己免受ddos攻击,这是一个完全不同的问题,攻击者很可能会使用flash player以外的其他工具来发起此类攻击。Flash player网络API对于此类活动有些缺乏/限制

如果您需要为文件提供身份验证,那么基于HTML/cookie的解决方案可能并不理想/不会始终有效,因为您有时可能希望不使用HTML提供文件/如果黑客创建合法会话/cookie怎么办?您可以使用两个组件加密(例如RSA)来生成密钥对,一个用于授权用户,另一个用于服务器。要求在请求数据和凭据时提供用户密钥。如果用户未向服务注册,则该用户的密钥部分与服务器的密钥部分组合将不会生成用户凭据(或使用密钥加密的任何数据),这将表示欺诈企图。然后,由你来阻止请求者等等。这种方法是坚如磐石的,再聪明的黑客也无法绕过这种方法。如果黑客未经授权,那么她将无法获得本世纪的数据:)

如果您不需要身份验证,那么基于cookie/会话的方法可能是合适的(这意味着数据访问仍然容易受到攻击,但更难访问)


哦,我刚刚意识到问题在于有太多的要求。那么,如果你已经发现他们不会得到任何真实的数据,比如说,为他们提供一个一个Terrabyte大的文件,你为什么不“满足”这些请求呢或者给他们发送一些贾斯汀·比伯的唱片/其他不太可能符合他们音乐品味的唱片?:)

当然,我可以这样做,通过一些散列令牌限制访问,但这不是我想要的,它也不能解决问题。这些播放器造成的问题是,它们不断向我的服务器发送HTTP请求,它们被设计为重新加载资源,直到成功。有些人将播放器嵌入他们的网络,然后用户打开这些页面,让播放器留在那里,继续发送HTTP请求。我的意思是,这更像是一种DDOS攻击,而不是访问控制问题。要阻止他们,我需要让Flash player知道他们不应该访问我的http资源。如果他们使用的播放器不尊重或未配置为使用crossdomain.xml之类的内容,该怎么办?(并不是说这正是你所观察到的,但应该加以考虑。)