一 前言 问题的存在
从代码级别上,也就是应用层次上考虑代码安全的话(也就是不考虑底层的语言本身等问题的漏洞),脚本安全问题就是函数和变量的问题。变量直接或者间接的接收用户不安全的的输入,由于php本身的特性,在php中更容易发现这种变量的混乱(很多php程序都用来定义以及初始化以及接收变量,可以直接在程序中使用$id这样的变量,初始化完全由php的设置来完成,如果稍不注意,就可能导致变量的混乱从而导致攻击)。
变量接收不安全的输入之后,没有做恰当的过滤又用在不同的地方,就可能造成不同的危害。如果直接进入数据库然后显示给用户就会导致跨站脚本攻击,如果用在 sql语句中就可能导致 Sql注射攻击,这几种攻击都是是与具体的脚本语言无关的,在各种脚本语言里都可能存在。由于php的变量很灵活,这些有害的变量如果用在一些逻辑语句中,就会导致关键代码的跳过如身份验证失败和跳过一些变量的初始化从而导致程序逻辑混乱而产生其他漏洞。如果这个变量用在了危险的函数如include等等当中,当然就会出现文件包含漏洞,出现在fopen函数里就会可能产生写文件的漏洞,出现在mysql_query函数中就是 Sql注射漏洞,eval以及preg_replace中可能导致代码的执行,出现在htmlspecia函数中可能导致出错而绝对路径泄露 变量出现的环境决定了它可能的危害。
思考了问题的存在,那么如何从代码级别上检查这种漏洞呢?当然熟悉熟悉php语言是最基本的,也应该是抓住函数和变量,危险的函数里如果有变量那么请确定这个变量的来源,是否正确的初始化,初始化之后是否能被用户注入敏感字符,在进入函数前这些敏感的字符是否得到了彻底的清除。对于代码审核工作的难点可能就在于对变量来源的确定,这需要对php特性以及你所审核的代码的熟悉,但也并不是所有的变量的来源都清晰可见,可能一些初始化的代码并没有像想象中运行,一些变量里的东西可能也来自于你并不想他来的地方,还有一些变量可能来自于数据库或者系统的配置文件,但是很可能数据库和配置文件在之前就已经被修改,或者在后面不安全的操作了这些变量,这些变量也是不可相信的。下面我们就按照变量与函数的思路来思考脚本代码的安全。
二 变量来自哪里?
1 显示的输入
叫变量来自哪里其实也就是说威胁来自哪里,只是从web上考虑的话,什么样的网站最安全?很明显,那些只提供静态Html页面的网站是最安全的,因为这样的网站不与浏览者进行任何交互,就好比打劫一个密不透风的银行,很难实现,但是对于一个大的论坛或者脚本程序就不一样了,你登陆的时候需要传递用户名和密码这些变量给服务器,甚至包括你登陆的Ip与浏览器等等都是程序抓取的对象,抓取一次与服务器交互的过程如发表帖子等等你就发现浏览器与服务器之间进行的数据传输,你可能看得见的包括提交的表单,地址栏参数等等,你看不见的包括Cookie,Http头都是提交数据也就是变量的地方。这些地方也是服务器处理数据最原始的入口。那么php程序是如何接受变量的呢?所有提交的变量都被php保存在了一些数组里,包括
$_GET
$_POST
$_COOKIE
$_FILES
$_SERVER
为了最初的方便与灵活,在php的设置里有这么个选项
register_globals
当这个选项为on的时候,上面出现的那些变量都会成为$GLOBALS中的一员,在脚本中都不需要再取得就可以直接使用,并且以
variables_order
的顺序覆盖。很多程序考虑到了register_globals为off的情况,于是在程序初始化的时候使用如下的代码:
@extract(daddslashes($_POST));
@extract(daddslashes($_GET));
这些代码起到了register_globals的作用,作用也是将POST和GET的内容释放出去做为全局变量,但是危险可能更大,后面会提到。

自动化和任务调度在简化软件开发中的重复任务方面发挥着至关重要的作用。想象一下,有一个Python脚本需要每5分钟执行一次,例如从API获取数据、执行数据处理或发送定期更新。如此频繁地手动运行脚本可能非常耗时并且容易出错。这就是任务调度的用武之地。在这篇博文中,我们将探讨如何安排Python脚本每5分钟执行一次,确保它自动运行而无需手动干预。我们将讨论可用于实现此目标的不同方法和库,使您能够有效地自动化任务。使用time.sleep()函数每5分钟运行一次Python脚本的一种简单方法是利用tim

在当今快节奏的数字世界中,能够自动执行计算机任务可以极大地提高生产力和便利性。其中一项任务是关闭计算机,如果手动完成,这可能会非常耗时。值得庆幸的是,Python为我们提供了一套强大的工具来与系统交互并自动执行此类任务。在这篇博文中,我们将探讨如何编写Python脚本来轻松关闭计算机。无论您是想安排自动关机、远程启动关机,还是只是通过避免手动关机来节省时间,此脚本都会派上用场。导入所需的模块在开始编写脚本之前,我们需要导入必要的模块,以便与系统交互并执行关闭命令。在本节中,我们将导入os模块(它

一. 什么是auto-py-to-exeauto-py-to-exe 是一个用于将Python程序打包成可执行文件的图形化工具。本文就是主要介绍如何使用 auto-py-to-exe 完成 python 程序打包。auto-py-to-exe 基于 pyinstaller ,相比于 pyinstaller ,它多了 GUI 界面,用起来更为简单方便二. 安装 auto-py-to-exe首先我们要确保我们的 python 环境要大于或等于 2.7 然后在 cmd 里面输入:pip install

重新启动计算机是一项常见任务,我们经常执行此任务来解决问题、安装更新或应用系统更改。虽然重新启动计算机的方法有很多种,但使用Python脚本可以提供自动化和便利性。在本文中,我们将探讨如何创建一个可以通过简单执行来重新启动计算机的Python脚本。我们将首先讨论重新启动计算机的重要性及其带来的好处。然后,我们将深入研究Python脚本的实现细节,解释所涉及的必要模块和功能。在整篇文章中,我们将提供详细的解释和代码片段,以确保清晰的理解。重新启动计算机的重要性重新启动计算机是基本的故障排除步骤,可

Python 脚本部分实例:企业微信告警、FTP 客户端、SSH 客户端、Saltstack 客户端、vCenter 客户端、获取域名 ssl 证书过期时间、发送今天的天气预报以及未来的天气趋势图;Shell 脚本部分实例:SVN 完整备份、Zabbix 监控用户密码过期、构建本地 YUM 以及上篇文章中有读者的需求(负载高时,查出占用比较高的进程脚本并存储或推送通知);篇幅有些长,还请大家耐心翻到文末,毕竟有彩蛋。Python 脚本部分企业微信告警此脚本通过企业微信应用,进行微信告警,可用于

相比大家都听过自动化生产线、自动化办公等词汇,在没有人工干预的情况下,机器可以自己完成各项任务,这大大提升了工作效率。编程世界里有各种各样的自动化脚本,来完成不同的任务。尤其Python非常适合编写自动化脚本,因为它语法简洁易懂,而且有丰富的第三方工具库。这次我们使用Python来实现几个自动化场景,或许可以用到你的工作中。1、自动化阅读网页新闻这个脚本能够实现从网页中抓取文本,然后自动化语音朗读,当你想听新闻的时候,这是个不错的选择。代码分为两大部分,第一通过爬虫抓取网页文本呢,第二通过阅读工

在当今的数字时代,自动化在简化和简化各种任务方面发挥着至关重要的作用。其中一项任务是注销计算机,这通常是通过从操作系统的用户界面中选择注销选项来手动完成的。但是,如果我们可以使用Python脚本自动执行此过程呢?在这篇博文中,我们将探讨如何创建一个Python脚本,只需几行代码就可以注销计算机。在本文中,我们将逐步介绍创建用于注销计算机的Python脚本的过程。我们将介绍必要的先决条件,讨论以编程方式注销的不同方法,并提供编写脚本的分步指南。此外,我们将解决特定于平台的注意事项,并重点介绍最佳实

程序员经常使用Bash命令语言创建Shell脚本来自动化手动任务。例如,他们会为各种配置、文件操作、生成构建结果和各种与DevOps相关的活动创建Bash脚本。几乎所有类Unix或基于Unix的操作系统都为用户提供预安装的Bash解释器,因此我们可以使用Bash编写更具可移植性的自动化脚本。正如我们已经知道的那样,Bash脚本编写是指使用Bash命令语言的语法、内置Bash命令和核心操作系统CLI程序(如GNU核心工具)编写一系列命令。标准且老式的Bash脚本通常执行一些命令并在终端上显示纯文本


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

记事本++7.3.1
好用且免费的代码编辑器

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),