当前位置:Scooters

php搜{练:sōu}索中的sql注入

2025-02-25 04:49:29Scooters

最实用有效的PHP中防止SQL注入?额,这是我老师给的答案 答:过滤一些常见的数据库操作关键字, select ,insert,update,delete,and,*等或通过系统函数addsla

最实用有效的PHP中防止SQL注入?

额,这是我老师给的答案 答:过滤一些常见的数据库操作关键字, select ,insert,update,delete,and,*等或通过系统函数addslashes对内容进行过滤php配置文件中register_globals=off设置为关闭状态.(作用将注册全局变量关闭)如接收POST表单的值使用$_POST["user"],假设设置为ON的话$user才接收值sql语句书写的时候尽量不要省略小引号(tab上面那个)和单引号提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,使之不易被猜中对于常的方法加以封装,避免直接暴漏SQL语句开启PHP安全模式safe_mode=on打开magic_quotes_gpc来防止SQL注入,默认为关闭,开启后自动把用户提交sql查询语句进行转换把"""转换成"""控制错误信息输出,关闭错误信息提示,将错误信息写到系统日志使用MYSQLI或PDO预处理

为什么很多开发人员痛恨PHP?

PHP不适合于比小型业余网站更大的网站。

1. 对递归的不【拼音:bù】良支持

递归是一种函数调用自身的机制。这是一种强大的特性可以把某些复杂的东西变得很简单澳门银河。有一个使用递归的例子(读:zi)是快速排序(quicksort)

不幸的是,PHP并不擅长递归。Zeev,一个PHP开发人员,说道:“PHP 4.0(Zend)对密集数据使用了栈方【练:fāng】式,而不是使用堆方式。也就是说它能容忍的递归[繁体:歸]函数的数量限制和其他语言比起来明显少

澳门永利

”见bug 1901。这是一个[繁:個]很{读:hěn}不好的借口。每一个编(繁:編)程语言都应该提供良好的递归支持

2. 许多PHP模块【练:kuài】都不是线程安全的

世界杯下注

在几年前,Apache发布了Web服务器的2.0版。这个版本支持多线程模式,在这个模mó 式下,软件一个一部分可以同时运行多个。PHP的发明者说PHP的核心是线程安全的,但是非[fēi]核心模块不一定是

但是十次有九【练:jiǔ】次,你想要在PHP脚【繁体:腳】本中使用这种模块,但这又使你的脚本不能合适Apache的多线程模式。这也是为什么PHP小组不推荐在Apache 2 的多线程模式下运行PHP。不良的多线程模【拼音:mó】式支持使PHP常被认为是Apache 2依然不流行的原因之一

3. PHP 因【读:yīn】为商业应用而残废

通过使用缓存,PHP的性能可以陡增500%[见基准《繁:準》测试]。那么为什么缓存没有被构建在PHP中(zhōng)呢?因为Zend——PHP的制造者,它在销售自己的Zend Accelerator,所以当然,他们不想抛弃自己的商业产品这块肥肉。

亚博体育

但是有另一个可选择的: APC. (Zend后来推出Zend Optimizer,免费的加速器——译者)

4. 没有命名空间[繁体:間]

设想某个人制作了一个PHP模块用来(繁:來)阅读文件。模块中一个函数叫做read。然后另一个人的模块可以读取网页的,同样包(bāo)含一个函数read。然后我们就无法同时使用这两个模块了,因为PHP不知道你要用哪个函数。

但是有一个很简澳门伦敦人单的解决方法,那就是命名空间。曾经有人建议PHP5加入这个特性,但不幸得是他没有这么做。现在,没有命名空间,每个函数都必须加上模块名作为前缀,来避免名称冲突。这[繁体:這]导致了函数名恐怖得长,例如xsl_xsltprocessor_transform_to_xml让代码难于书写和理解。

5. 不标准的日(读:rì)期格式字符

很多程序员对 日期格式字符 都很熟悉,它是从UNIX和C语言中{pinyin:zhōng}来的。其他一澳门银河些编程语言采用了这个标准,但是很奇怪的,PHP有它自己的一套完全不兼容的日期格式字符。在C中,“%j”表示一年中的当天,在PHP中他表示一个月中的当天。然而使事情更混乱的是:Smarty (一个很流行的PHP模版引擎)的 strftime 函数和 date_format 函数,却使用了C/UNIX的格式化字符。

6. 混乱的许[xǔ]可证

你也许认为PHP是免费的,所有的在手册中提到{练:dào}的PHP模块也是免费的。错了!例如,如果你想在PHP中生成P澳门巴黎人DF文件,你会在手册中发现两个模块:PDF 和 ClibPDF。但是这两个都是有商业许可证的。所以,你所使用的每个模块,你都要确保你同意他的许可证。

7. 不一致的函数命{读:mìng}名规则

有些函数名称是有多个单词组成的。一般有(pinyin:yǒu)三种单词组合的习惯:

直接拼接【拼音:jiē】:getnumberoffiles

用下划线分开[繁:開]:get_number_of_files

澳门威尼斯人

骆驼法则{pinyin:zé}:getNumberOfFiles

大部分(fēn)语言选择其中一中。但是PHP都用到了。

例如,开云体育你想要把一些特殊字符转换成HTML实体,你会使用函数htmlentities (直接拼接单词)。如果你要使用相反【pinyin:fǎn】的功能,你要用到它的小弟弟html_entity_decode。由于某些特殊的原因,这个函数名是由下划线分隔单词

怎么能这样呢?你知道有一个函数叫strpad。或者他是(shì)str_pad?每次你都要查看一下到底这个符号是什么或者直接【练:jiē】等他出现一个错误。函数是不分大小写的,所以对于PHP来说rawurldecode 和RawUrlDecode之间没有什么区别

这也很糟糕,因为两个都使用到了同时他们(繁:們)看上【练:shàng】去还不一样,混淆了《繁:瞭》阅读者。

8. 魔法引用(练:yòng)的地狱

魔法引用(Magic quote)可以保护PHP脚本免受SQL注入攻击(繁体:擊)。这很好。但是出于某些原因,你可以在php.ini中关闭[繁体:閉]这个配置

所以你如果要写出【练:chū】一【拼音:yī】个有弹性的脚本,你总(繁体:總)要检查魔法引用是开启还是关闭。这样一个“特性”应该让编程更简单,而事实上变得更复杂了。

澳门新葡京

9. 缺少(练:shǎo)标准框架

一个成长中的网站没有一个整体框架,最终会变成维护的噩梦。一个框架可以让很多工作变得简单。现在最流(拼音:liú)行的框架模型时MVC-模(mó)型,在其中表现层、业务逻辑和数据库访问都分离开了。

本文链接:http://10.21taiyang.com/Scooters/21506541.html
php搜{练:sōu}索中的sql注入转载请注明出处来源