mysql: 从客户端向服务器导入大量行
mysql: import large number of rows from client to server
我有一个应用程序可能会生成巨大的 tables,各种客户端应该能够将数据发送到中央数据库。
现在我正在考虑批处理请求并通过 php 发送它们,这可能是经典方法。
我想知道,是否有一个确切的原因为什么我不应该让应用程序转储 table,通过 post 将转储上传到服务器并让服务器再次导入 table?
我担心安全问题,因为可以从互联网访问服务器,你能将恶意代码放入 sql 转储中吗?如果是这样,你能在导入前清理转储吗?
数据导入不能修改代码,但是恶意数据可以包含在数据导入中。
那么您的应用程序使用数据的方式可能会冒着数据变成代码的风险。常用路径有两种:
二次SQL注入。你查询一些数据,并将结果插入到另一个字符串中,然后运行作为一个查询或者作为一个命令。
解决方案:使用 SQL 查询参数或白名单过滤所有不受信任的输入。
跨站脚本(XSS)。你查询了一些数据,并在网页中输出。如果数据包含内联 Javascript 表达式,它可能会导致用户的浏览器无意中 运行 Javascript 代码,从他们的浏览器捕获数据,并对该数据进行恶意操作。
解决方案:使用类似 htmlentities() 的函数过滤所有不受信任的输出,它通过转义 <script>
标签来击败 XSS。
您询问是否有某种方法可以在导入前清理转储。 可能会。但这样做更有可能会过多地限制您的导入数据。也许数据合法地需要包含撇号和 <
字符。
通常最好让数据按原样导入,但随后要小心如何使用数据,如上所述。
我有一个应用程序可能会生成巨大的 tables,各种客户端应该能够将数据发送到中央数据库。 现在我正在考虑批处理请求并通过 php 发送它们,这可能是经典方法。 我想知道,是否有一个确切的原因为什么我不应该让应用程序转储 table,通过 post 将转储上传到服务器并让服务器再次导入 table? 我担心安全问题,因为可以从互联网访问服务器,你能将恶意代码放入 sql 转储中吗?如果是这样,你能在导入前清理转储吗?
数据导入不能修改代码,但是恶意数据可以包含在数据导入中。
那么您的应用程序使用数据的方式可能会冒着数据变成代码的风险。常用路径有两种:
二次SQL注入。你查询一些数据,并将结果插入到另一个字符串中,然后运行作为一个查询或者作为一个命令。
解决方案:使用 SQL 查询参数或白名单过滤所有不受信任的输入。
跨站脚本(XSS)。你查询了一些数据,并在网页中输出。如果数据包含内联 Javascript 表达式,它可能会导致用户的浏览器无意中 运行 Javascript 代码,从他们的浏览器捕获数据,并对该数据进行恶意操作。
解决方案:使用类似 htmlentities() 的函数过滤所有不受信任的输出,它通过转义 <script>
标签来击败 XSS。
您询问是否有某种方法可以在导入前清理转储。 可能会。但这样做更有可能会过多地限制您的导入数据。也许数据合法地需要包含撇号和 <
字符。
通常最好让数据按原样导入,但随后要小心如何使用数据,如上所述。