是否可以将二进制图像数据放入html标记中,然后在任何浏览器中像往常一样显示图像?

Joe*_*ann 49 html security image apache2 passenger

这是一个重要的安全问题,我相信这应该是可能的.

一个简单的例子:

您运行社区门户.用户已注册并上传他们的照片.只要允许显示图片,您的应用程序就会提供安全规则.例如,用户必须是系统各方的朋友,以便您可以查看其他人上传的图片.

问题出现了:有人可能会抓取您服务器的图像目录.但是您希望保护您的用户免受此类攻击.

如果可以将图像的二进制数据直接放入HTML标记中,则可以限制用户对用户的访问权限以及运行Web应用程序的组,并将图像数据直接传递给Apache用户和组. HTML.

那么唯一可能的弱点就是您的网络应用运行的用户的密码.

有可能吗?

bmb*_*bmb 86

在其他答案中描述了其他(更好)方法来保护您的文件,但是可以将图像嵌入到您的html中.

<img>这种方式使用标签:

<img src="data:image/gif;base64,xxxxxxxxxxxxx...">
Run Code Online (Sandbox Code Playgroud)

其中该xxxxx...部分是gif图像数据的base64编码.

  • 我不知道我是如何偶然发现这个旧问题/答案的,但重要的是要注意,这不是*OP*提到的*二进制*。这是 Base64 ASCII 编码。源最初是二进制的。 (2认同)

Not*_*tMe 12

如果我在images目录上需要安全性,我根本不会公开该目录.相反,我的img src属性将引用一个将userid和image id作为参数的页面.

该页面将验证该用户确实有权查看该图片.如果一切顺利,请将二进制文件发回.否则什么都不发

例如:

<img src="imgaccess.php?userid=1111&imgid=223423" />
Run Code Online (Sandbox Code Playgroud)

另外,我不会使用可猜测的id.而是坚持使用base 64编码guid的东西.