安全地上传和提供从Open Graph中删除的图像

时间:2016-07-11 12:11:17

标签: php wordpress .htaccess security facebook-opengraph

此问题涉及在我的网站从公共聊天板中发布的外部网页链接中删除,存储和嵌入Open Graph图像时保护我的系统并保护我的用户。

我有一个聊天论坛应用程序(Apache / PHP / WordPress),用户可以在其中发布指向外部页面的链接,我想安全地存储和嵌入打开的图形图像,标题,描述,类似于Facebook的方式当你发布链接时。

Facebook通过抓取Open Graph数据并将图像的本地版本存储在自己的服务器上来实现这一点,这可能是为了获得持久性和性能。我想同样在本地存储OG图像,这样我就可以调整大小并对其进行扫描,并保留它以供将来使用。

我在GitHub上使用Open Graph Protocol helper for PHP进行了很好的拼接工作。

但是我的关注的一个例子在GitHub源本身的示例中得到了证明 - 它从烂番茄中提取页面,并且OG图像具有以下格式:

https://resizing.flixster.com/Er0hIAp55dpRWn5HQTrPc1f2hZE=/740x290/v1.bjs5NzU2NjtqOzE3MDExOzEyMDA7MTEyMDs4NDA

此网址没有扩展名,我知道即使它有扩展名,也可能是错误的,图片可能包含恶意代码,如果我上传并投放图片,我可能会暴露用户。< / p>

我目前的安全方法包括

  • 使用PHP的exif_imagetype()可靠地(?)检查文件类型。如果图像与PNG,JPG,GIF等不匹配,请拒绝它。

  • 使用.htaccess锁定uploads目录,并明确禁止脚本执行

    AddHandler cgi-script .php .php3 .php4 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi
    Options -ExecCGI
    
  • 将图像存储在Web根目录之外,并使用PHP函数(例如imagecreatefromjpeg)来提供它。

  • 限制上传目录(例如chmod 770)

鉴于我的目标(刮图像,流程,存储,嵌入),我是否遗漏了可以进一步减轻的安全漏洞?是否有可以推荐的图书馆或其他功能,以确保以这种方式提供的图像是(相对)安全的?

1 个答案:

答案 0 :(得分:0)

如果您使用的是WordPress,则可以使用具有内置opengraph功能的Yoast SEO plugin

参考:https://kb.yoast.com/kb/getting-open-graph-for-your-articles/