gpt4 book ai didi

PHP 安全 - 清理和清理

转载 作者:行者123 更新时间:2023-12-02 05:31:43 27 4
gpt4 key购买 nike

我围绕 class.upload 从 http://www.verot.net/php_class_upload.htm 构建了一个脚本

基本上,我所有的图像都存储在服务器上一个名为 /images/ 的目录中。

我构建的脚本基本上是从我的网站中获取一些参数,例如 /xyzDir/tomnjerry.jpg?w=100&h=100&fill=1&color=fff
然后我有 mod_rewrite 从 /xyzDir/ 读取文件转换成一个 php 脚本,然后转换宽度和高度并返回图像。

最近我注意到一些来自土耳其的白痴试图在参数中输入奇怪的字符w=h=
在我的脚本中,我确实检查以确保宽度和高度中只允许整数,填充可以是 1 或 2,颜色只能是我通过数组检查的某些值。

我只是想看看是否还有什么我应该做的,以避免被黑客入侵。

谢谢

最佳答案

永远记住,对于所有用户提供的(或不受信任的)输入,过滤输入、转义输出。

读取用户提供的数据时,将其过滤为已知值。 不要列入黑名单! 永远永远永远总是 将您期望获得的内容列入白名单。如果您需要一个十六进制数字,请使用如下正则表达式对其进行验证:^[a-f0-9]+$ .弄清楚你的期望,然后过滤。除了字母、数字和 . 之外,您的文件名都没有吗? ?然后过滤到^[a-z0-9.]+$ .但不要开始考虑将事物列入黑名单。它行不通。

使用用户数据时,请正确转义以供手头使用。如果它在数据库中,要么将其绑定(bind)为参数化查询,要么使用数据库的转义函数对其进行转义。如果您正在调用 shell 命令,请使用 escapeshellarg() 对其进行转义。 .如果您在正则表达式模式中使用它,请使用 preg_quote() 对其进行转义。 .还有更多,但你明白了。

输出用户数据时,请根据您输出的格式正确转义它。如果要将其输出为 HTML 或 XML,请使用 htmlspecialchars() .如果您出于某种原因输出到原始标题,请转义任何换行符( str_replace(array("\r", "\n"), array('\r', '\n'), $string) )。等等等等等等。

但始终使用白名单进行过滤,并始终使用正确的上下文方法进行转义。否则你很有可能会错过一些东西......

关于PHP 安全 - 清理和清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4762824/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com