PHP编程注意事项

【PHP安全几则tips】

1. 输入输出安全

(1)关闭 register_global 选项( php4及以前),初始化所有变量,能防止调用未定义变量notice错误,也能够防范一些hacker行为

(2)接收任何变量的时候,务必记住:所有用户输入都是不安全的!如果确定用户输入数据是整数(比如ID之类),可以使用(int)或intval()函数强制类型转换,如果是字符串类型,使用 addslashes 或 mysql_escape_string(如果考虑数据库 编码请连接数据库后使用 mysql_real_escape_string更安全,针对GBK等 编码,使用该函数能够防范目前很多GBK 编码爆出的注入漏洞)注1

(3)输出数据的时候,如果害怕html,可以使用strip_tags全部过滤,或者使用 htmlspecialchars 进行html标签转义保证输出到页面不会构成威胁,另外,最好输入或者输出的时候过滤所有的<script><iframe><object>等标记和内容,有时候<style>或作为属性的style也最好过滤一下

注1:问题来自多字节编码。例如在GBK里,0xbf27并不是一个合法的双字节字符,因此addslash()会把它转义成0xbf5c27,碰巧0xbf5c是一个合法的双字节字符,由此可以注入一个0x27 (')。addslash()和mysql_escape_string无药可救。mysql_real_escape_string()可以根据字符集正确地转义,但是需要在建立数据库联接的时候指明“SET CHARACTER SET 'GBK'”。


2. php系统安全

(1)打开 safe_mode 是最重要的,同时设置 open_ba sedir, safe_mode_include_dir,safe_mode_exec_dir 等选项

(2)当要操作或者包含文件的时候,使用realpath 和 basename 检查文件是否是本地文件

(3)如果很多危险函数如果不使用,建议关闭,关闭函数修改disbale_functions选项,比如很多命令执行函数、eval、phpinfo 等函数

(4)如果不需要上传文件功能可以关闭,如果需要记得设置 post_max_size 选项为你合适的大小,否则文件系统很容易被塞满,并且move_ uploaded_ file来操作上传的文件,而且不是使用copy

(5)把库文件(.inc)和数据文件(数据信息,配置信息,sqlite数据库等)不要与 web目录放在一起,防止被下载
 
 
 
 
 

小议urldecode等函数的安全使用

urldecode函数在很多程序中是经常使用的,对用户提交的某些字符进行URL解码,防止一些字符截断之类的问题出现
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值