【问题标题】:How to protect HTML navigation如何保护 HTML 导航
【发布时间】:2010-07-04 22:00:05
【问题描述】:

我正在为电子学习平台编写软件。验证通过 PHP 和 MySQL 执行。所有内容都上传到受 HTACCESS 直接访问保护的文件夹中,内容仅通过 PHP 例程提供给用户,该例程验证学生凭据,然后打开文件并将其发送到浏览器。

这适用于所有常规类型的内容(flash、gif、pdf 等),但不能用于作为常规 HTML 页面和图形上传的内容。

有谁知道尽可能多地保护此类内容是个好主意吗?我想把它放在一个随机命名的目录中,并链接到 iframe 中的内容以尽可能隐藏地址,但是有更好的方法吗?

谢谢!

【问题讨论】:

标签: php mysql html


【解决方案1】:

我可能有点晚了,但万一其他人寻找这个......也许你可以给这些文件一个额外的扩展名,然后告诉 apache(或任何人)php 实际上会处理这些文件. 例如,您有一个“example.html”文件,将其重命名为“example.html.answers”。 然后,当您需要提供 'name.html' 文件时,实际上是传递了 'name.html'.'answers' 参数。

【讨论】:

    【解决方案2】:

    解决此问题的一种方法是让中间脚本从受保护的位置提供二进制内容(基于用户权限)。

    所以一个典型的文件下载 URL 而不是 /resources/foo.pdf 将是 /download.php?foo.pdf

    【讨论】:

    • 是的,我已经为常规文件这样做了,但问题是内容本身由必须直接提供的 HTML 页面组成。
    • 为什么需要直接为他们服务?为什么不直接通过与其他资源类型相同的 PHP 脚本传递 HTML?
    • 考虑到内容中的链接和图像,这是否可行?没试过,只是觉得不会……
    【解决方案3】:

    您可以按照 cherouvim 的建议提供非 HTML(或非文本),并将 HTML(实际上是所有文本)存储在数据库表中。然后,您的 download.php 脚本必须足够智能,才能在数据库中查询 .html 等文件。

    然后的问题是任何图像或其他资产都会有错误的 URL(例如 <img src="image.jpg"/> 而不是 <img src="download.php?image.jpg/>。您必须在数据库中保存的 HTML 中重新编写这些资产的链接 - - 您可以结合使用 XML 解释器(以提取所有 img 标记和链接到文件的其他标记)和正则表达式来确定哪些需要重写(例如重写 src="image.jpg" 而不是 @987654325 @。

    不是有史以来最优雅的解决方案,但我认为它会起作用。

    【讨论】:

    • 是的,但解析仍然是一场噩梦 - 想象框架、嵌入 SWF 等等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2018-12-25
    • 2021-01-26
    • 2019-12-31
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    相关资源
    最近更新 更多