PHP万能密码
刚接触PHP,对PHP安全方面的资料作了些收集和查阅,PHP注入首当其冲,一篇神秘小强的PHP万能密码写得不错,摘录:
说实话如果一个网站的前台都是注入漏洞,那么凭经验,万能密码进后台的几率基本上是百分之百。
可是有的人说对PHP的站如果是GPC魔术转换开启,就会对特殊符号转义,就彻底杜绝了PHP注入。其实说这话的人没有好好想过,更没有尝试过用万能密码进PHP的后台。其实GPC魔术转换是否开启对用万能密码进后台一点影响也没有。如果你用这样的万能密码'or'='or',当然进不去,理由是GPC开启的时候单引号会被转换。
PHP注入时我常用的PHP万能密码是:
'or 1=1/*.
那我们分析一下为什么这可以进后台。
如果SQL语句这样写:
PHP菜鸟应该注意的问题
如果你有下面这40个迹象,表明你还是 PHP 菜鸟,下面这些就是应该注意的问题:
1. 不会利用如phpDoc这样的工具来恰当地注释你的代码
2. 对优秀的集成开发环境如Zend Studio或Eclipse PDT视而不见
3. 从未用过任何形式的版本控制系统,如Subclipse(AmirFish注:我用SVN)
4. 不采用某种编码与命名标准,以及通用约定,不能在项目开发周期里贯彻落实(AmirFish注:这部分一直在做,但是觉得还不够好!)
5. 不使用统一开发方式(AmirFish注:不太明白)
6. 不转换(或)也不验证某些输入或SQL查询串(译注:参考PHP相关函数)
7. 不在编码之前彻底规划你的程序(AmirFish注:或许还不够彻底,没有深入每一个细节)
8. 不使用测试驱动开发
9. 不在错误开启状态下进行编码和测试(译注:参考PHP函数error_reporting)
PHP变量处理函数
gettype: 取得变量的类型。
intval: 变量转成整数类型。
doubleval: 变量转成倍浮点数类型。
empty: 判断变量是否已配置。
is_array: 判断变量类型是否为数组类型。
is_double: 判断变量类型是否为倍浮点数类型。
is_float: 判断变量类型是否为浮点数类型。
is_int: 判断变量类型是否为整数类型。
is_integer: 判断变量类型是否为长整数类型。
is_long: 判断变量类型是否为长整数类型。
is_object: 判断变量类型是否为类类型。
is_real: 判断变量类型是否为实数类型。
is_string: 判断变量类型是否为字符串类型。
isset: 判断变量是否已配置。
settype: 配置变量类型。
strval: 将变量转成字符串类型。
unset: 删除变量。
php urlencode()
在PHP中有urlencode()、urldecode()、rawurlencode()、rawurldecode()这些函数来解决网页URL编码解码问题。
在ASP的时候URL编码解码很是恼火,Server.urlencode不太好用,遇到utf-8编码的地址更是麻烦。你要获取百度、Google点击到网站的网址链接中的关键字,要写上一堆自定义函数来得到urldecode的效果。
摘录一篇关于PHP urlencode()函数的文章,对PHP处理URL作全面了解,文章来自373ren排行13,感谢。
理解urlencode:
urlencode:是指针对网页url中的中文字符的一种编码转化方式,最常见的就是Baidu、Google等搜索引擎中输入中文查询时候,生成经过 Encode过的网页URL。urlencode的方式一般有两种一种是传统的基于GB2312的Encode(Baidu、Yisou等使用),一种是 基于utf-8的Encode(Google,Yahoo等使用)。本工具分别实现两种方式的Encode与Decode。