PHP:base64_encode是否可以防止mysql注入?


ikun
2025-03-10 05:38:20 (7天前)
  1. 似乎已损坏,无法正常打开。

感谢Jgoettsch提出的一个问题(php:将mysql_real_escape_string的影响转换为

二进制
</跨度>
),我意识到通过 mysql_real_escape_string提供文件数据(以防止注入)可能会破坏文件内容,并且有理由通过

二进制
</跨度>
通过base64_encode()代替,并在下载之前使用base64_decode()。

这是一些模型代码

3 条回复
  1. 0# ⑩Ⅵ嵗D夨憶 | 2019-08-31 10-32



    既然你在谈论消毒,我假设这是一个公共网站,陌生人将上传文件。存储用户提交的PDF文件是一个

    很坏
    </强>
    理念。首先,您如何确定您收到的文件甚至是PDF?用户可以100%将CURL恶意文件存入您的数据库并让用户在不知情的情况下下载病毒。 PDF格式本身(如果我没记错的话)实际上可能会在某些Windows操作系统中执行病毒,就像WMV和WMA文件一样。



    如果您绝对需要PDF,那么最好的选择就是

    创建
    </强>
    您自己的PDF文件,其中包含用户提交的清理数据。您可以在线找到有关如何执行此操作的教程。我个人不建议首先使用PDF,因为你可以使用HTML&amp; CSS构建简历并完美打印出来。


  2. 1# 梦中会飞的鱼 | 2019-08-31 10-32




    Q
    </强>
    如果你有一个文件上传字段,该字段是否容易受到sql注入?




    一个
    </强>
    是(类似于。表单上的字段不是易受SQL注入攻击的;该漏洞实际上是在处理请求中提交的值的代码中。)




    Q
    </强>
    还是我不必要地担心?




    一个
    </强>
    不应该。您应该始终了解可能发生的不良事件,并以防止漏洞暴露(和利用)的方式编写代码。




    Q
    </强>
    如果我通过base64_encode()提供上传的文件内容,这是否相当于清理?




    一个
    </强>
    它几乎就在那里,只要你的base64_encode保证返回的值只包含[A-Za-z0-9 + ./ =]。最佳做法是使用绑定参数




    Q
    </强>
    或者我应该编码它然后另外通过mysql_real_escape_string传递编码的字符串?




    一个
    </强>
    除非使用带有绑定参数的预准备语句,否则最佳实践要求所有值(包括base64_encoded值)通过mysql_real_escape_string运行,如果它们包含在要提交给数据库的SQL文本中。


登录 后才能参与评论