php - 如何确保文件是 XML 文件

标签 php xml multithreading security xml-parsing

我不太了解文件及其相关的安全性。我在 XML 文件中有很多数据,我计划解析这些数据以放入数据库中。我从第 3 方的人那里得到这些 XML 文件。我每天至少会收到大约 1000 个文件。所以我将编写一个脚本来解析它们以输入我们的数据库。现在我对此有很多疑问。

  • 我知道如何解析单个文件。而且我可以在一个循环中将逻辑扩展到多个文件。但是,有没有更好的方法来做同样的事情?我如何使用多线程编程同时解析文件中的许多文件。将有一个脚本,给定文件,解析单个文件并输出到数据库。如何使用此脚本在多线程/并行处理中进行解析
  • 正如我所说,该文件来自第 3 方网站。那么我怎么能确定没有安全漏洞。我的意思是,我不太关心文件安全。但是我需要采取的最低限度的常见基本安全检查是什么。(如网络编程中的 sql 注入(inject)和 XSS 非常基本)
  • 再次与安全相关:如何确保传入的 XML 文件是 XML 本身。我的意思是我可以使用扩展,但是当我解析这些文件时,是否有可能注入(inject)脚本并使它们运行。以及解析单个文件时应该采取哪些步骤
  • 最佳答案

    你想validate the XML .这做了两件事:

  • 确保它是“格式正确的” - 一个有效的 XML 文档
  • 确保它是“有效的”——遵循模式、dtd 或其他定义——它具有您希望解析的元素。

  • php5 the syntax验证 XML 文档的方法是:
  • $dom->validate('articles.dtd');
  • $dom->relaxNGValidate('articles.rng');
  • $dom->schemaValidate('articles.xsd');

  • 当然,您需要一个 XSD(XML 模式)或 DTD(文档类型定义)来进行验证。

    关于php - 如何确保文件是 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6880506/

    相关文章:

    xml - 如何在 XSD 中使用 targetNamespace 来验证 XML

    Android在蓝牙套接字上设置超时

    java - 无法访问线程类的方法?

    c# - .NET 中的 ManualResetEvent 和 AutoResetEvent 有什么区别?

    php - symfony2 以编程方式验证用户

    php - MY_Model - 动态更改表?

    php - 以 POST 请求发送删除操作

    php - Symfony2 向外部 API 发送 POST 请求并解析其 XML 响应?

    c# - 将兄弟节点插入到 xml 文档中

    php - upload_max_filesize 设置为 1G 时无法上传超过 500MB 的文件