php - 像 JPG 或 MP4 这样的媒体文件本身可以包含脚本标签吗?
我正在用 PHP 编写图像上传器。它将允许用户在网站上上传 JPG 和 PNG 图像。接下来是 MP4 视频(如链接的图片所示)。最重要的是,我的目标是让这个上传器尽可能安全。
(如果您有兴趣,作为旁注,上传者目前:
问题描述
我正在用 PHP 编写图像上传器。它将允许用户在网站上上传 JPG 和 PNG 图像。接下来是 MP4 视频(如链接的图片所示)。最重要的是,我的目标是让这个上传器尽可能安全。
(如果您有兴趣,作为旁注,上传者目前:
- 检查文件类型
- 完全重写原始文件名
- 限制文件大小
- 使用 getimagesize() 检查文件是否为图像
- 从所有用户中删除文件的执行权限)
文件内容检查:
例如,很明显,将恶意 PHP 或 Javascript 代码插入 .JPG 或任何其他文件非常容易。正因为如此,我还准备让我的上传器从每个文件的内容中删除所有标签,如“<?php”、“<style...”或“<script...”。
这似乎解决了一个问题,但它会产生另一个问题吗?例如,此媒体文件(请参阅链接图片)包含诸如“<?ph”之类的字符。这个完全无害、无功能的 '<?ph' 显然是在没有恶意的情况下以编程方式生成的。那么有几个?> 可以在同一媒体文件中找到的标签。我提到这一点只是为了引导您解决我的真正问题:
有什么东西会阻止 JPG、PNG 和 MP4 编码器或其他相关程序在文件中生成完整的 <?php、<style...、<script... 和其他标签吗?我们没有尝试就接近了,所以我认为这样问是公平的。
如果没有什么能阻止这种情况,那么我应该找到更好的方法来处理媒体文件中的恶意代码。即使我的卸妆剂有效,我仍然对“正确”的做法感兴趣。
我希望我的问题不会太宽泛,因为我提到了多种文件类型。非常感谢任何帮助。非常感谢。
额外问题:PDF、WEBM、FLV 和其他常见媒体文件如何:它们本身可以包含如此完整的标签吗?
像 JPG 或 MP4 这样的媒体文件本身是否可以包含像 <?php 或 <script... 这样的脚本标签作为其编码的一部分?
TypeError: unhashable type: list in len(re.findall())
我正在为学校作业编写一个非常简单的 KENO sim。非常基础的 Python 知识。我收到一个 TypeError: unhashable type: list
如果相关,这是我的整个代码:(下面的具体部分)
import random
from random import randrange
import sys
import re
def keno_sim():
acceptable_values = list(range(1, 40))
number_no = int(input("How many numbers would you like to input? (MIN: 1 MAX: 40): "))
if number_no in acceptable_values:
print ("Pick your numbers, (between 1-80), seperated by commas ")
answer = input("> ").split(",")
else:
print ("Please choose a number that's 1-40")
random_number = random.sample(range(1, 80), number_no)
print ("Your numbers are:",answer)
print ("The generated numbers are:",random_number)
matches = len(re.findall(answer, random_number))
if matches > 0.5 * random_number:
print ("You win!")
print ("You had",matches,"matches!")
elif matches < 0.5 * random_number:
print ("Close! but wrong number!")
print ("You had",matches,"matches!")
print("This is KENO\n")
print("GENERAL RULES:\nPick how many numbers you’d like to play, ranging from 1 to 40. Same numbers are drawn from the 80 available on the Keno game grid, if you match more than half of them, you win!")
keno_sim()
again = str(input("Do you want to play again (type yes or no): "))
if again == ["yes", "Yes", "yess", "y","ye", "yea"]:
keno_sim()
else:
print ("Thanks for playing ,name, !")
sys.exit(0)
具体部分:
matches = len(re.findall(answer, random_number))
if matches > 0.5 * random_number:
print ("You win!")
print ("You had",matches,"matches!")
elif matches < 0.5 * random_number:
print ("Close! but wrong number!")
print ("You had",matches,"matches!")
如果可能,请给出具体的修复或示例
解决方案
推荐阅读
- sql-server - 使用 3 个参数创建函数 - 开始年份、结束年份和月份
- python - 战术游戏中的 Python 运行时错误:dict 对象不可调用
- android - 如何在片段中创建选项菜单
- python - 启动时运行的 shell 脚本无法运行 mysql
- javascript - S3 上托管的图像仅在 Android chrome 上存在 CORS 错误
- c++ - 如何通过指向另一个成员函数的指针传递模板成员函数?
- c++ - 在 C++ 中覆盖 OpenGL 的纹理包装器
- migration - 如何将现有数据迁移到果园项目?
- python - 如何旋转 pandas DataFrame,然后添加分层列?
- python - 如何将 6 秒的功耗时间序列数据转换为 1 小时的数据?
我正在用 PHP 编写图像上传器。它将允许用户在网站上上传 JPG 和 PNG 图像。接下来是 MP4 视频(如链接的图片所示)。最重要的是,我的目标是让这个上传器尽可能安全。
(如果您有兴趣,作为旁注,上传者目前:
问题描述
我正在用 PHP 编写图像上传器。它将允许用户在网站上上传 JPG 和 PNG 图像。接下来是 MP4 视频(如链接的图片所示)。最重要的是,我的目标是让这个上传器尽可能安全。
(如果您有兴趣,作为旁注,上传者目前:
- 检查文件类型
- 完全重写原始文件名
- 限制文件大小
- 使用 getimagesize() 检查文件是否为图像
- 从所有用户中删除文件的执行权限)
文件内容检查:
例如,很明显,将恶意 PHP 或 Javascript 代码插入 .JPG 或任何其他文件非常容易。正因为如此,我还准备让我的上传器从每个文件的内容中删除所有标签,如“<?php”、“<style...”或“<script...”。
这似乎解决了一个问题,但它会产生另一个问题吗?例如,此媒体文件(请参阅链接图片)包含诸如“<?ph”之类的字符。这个完全无害、无功能的 '<?ph' 显然是在没有恶意的情况下以编程方式生成的。那么有几个?> 可以在同一媒体文件中找到的标签。我提到这一点只是为了引导您解决我的真正问题:
有什么东西会阻止 JPG、PNG 和 MP4 编码器或其他相关程序在文件中生成完整的 <?php、<style...、<script... 和其他标签吗?我们没有尝试就接近了,所以我认为这样问是公平的。
如果没有什么能阻止这种情况,那么我应该找到更好的方法来处理媒体文件中的恶意代码。即使我的卸妆剂有效,我仍然对“正确”的做法感兴趣。
我希望我的问题不会太宽泛,因为我提到了多种文件类型。非常感谢任何帮助。非常感谢。
额外问题:PDF、WEBM、FLV 和其他常见媒体文件如何:它们本身可以包含如此完整的标签吗?
像 JPG 或 MP4 这样的媒体文件本身是否可以包含像 <?php 或 <script... 这样的脚本标签作为其编码的一部分?
我正在为学校作业编写一个非常简单的 KENO sim。非常基础的 Python 知识。我收到一个 TypeError: unhashable type: list
如果相关,这是我的整个代码:(下面的具体部分)
import random
from random import randrange
import sys
import re
def keno_sim():
acceptable_values = list(range(1, 40))
number_no = int(input("How many numbers would you like to input? (MIN: 1 MAX: 40): "))
if number_no in acceptable_values:
print ("Pick your numbers, (between 1-80), seperated by commas ")
answer = input("> ").split(",")
else:
print ("Please choose a number that's 1-40")
random_number = random.sample(range(1, 80), number_no)
print ("Your numbers are:",answer)
print ("The generated numbers are:",random_number)
matches = len(re.findall(answer, random_number))
if matches > 0.5 * random_number:
print ("You win!")
print ("You had",matches,"matches!")
elif matches < 0.5 * random_number:
print ("Close! but wrong number!")
print ("You had",matches,"matches!")
print("This is KENO\n")
print("GENERAL RULES:\nPick how many numbers you’d like to play, ranging from 1 to 40. Same numbers are drawn from the 80 available on the Keno game grid, if you match more than half of them, you win!")
keno_sim()
again = str(input("Do you want to play again (type yes or no): "))
if again == ["yes", "Yes", "yess", "y","ye", "yea"]:
keno_sim()
else:
print ("Thanks for playing ,name, !")
sys.exit(0)
具体部分:
matches = len(re.findall(answer, random_number))
if matches > 0.5 * random_number:
print ("You win!")
print ("You had",matches,"matches!")
elif matches < 0.5 * random_number:
print ("Close! but wrong number!")
print ("You had",matches,"matches!")
如果可能,请给出具体的修复或示例