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