0

0

php 项目代码的安全总结

php中文网

php中文网

发布时间:2016-05-25 16:41:04

|

1030人浏览过

|

来源于php中文网

原创

在用php开发项目时很多时间我们模块化的开发,这时就可以可能存在很多安全隐藏了,下面是我总结的一些php 项目代码的安全总结,有需要了解的同学可参考。

1:基础型.

include $module.'.php'; $module假如直接用GET上得到, 那这是个非常毁灭性的bug, linux下让你痛不欲生, windows下让你倾家当产, 这类安全性一般都会被人直接发现, 而有效地阻止. 假如你连这点都没做到, 请问你是否称得上合格的程序员?

2:质的安全.

许多人会说, 外部变量应该addslashes一次, 我们先不管addslashes函数是否高效安全, 许多人其实忘记了在使用addslashes之前, 也得注意安全. index.php?aa[]=222&, 这是url, addslashes($aa); 系统会报错. 由此可见, 我们在使用函数的同时, 理应知道数据类型的不同, 会产生哪种情况. 以前有文章说过, 函数注册了传参数>0数字型, 用户传入字母,怎么办. 许多人认为是函数的错误, 在我看来, 是使用者的错误, 虽然是自定义函数, 不过你瞒目的传参数, 不解其中原由, 这点态度上已经很不安全.

立即学习PHP免费学习笔记(深入)”;

3:压力安全.

目前你偶尔看163的新闻, 会发现, 浏览器会突然崩溃, 假死, 甚至浏览器"被关闭". 这个原因有可能是网页程序代码问题, 也有可能是前端js的问题, 特别是js, 由于js特性比较灵活, 在使用循环, 赋值方面, 不容易查错, 比较突出的一点在于取值及错误再处理. 比如getelementbyid('mydiv'); 这时, 你是否有想过, mydiv是否存在? 是否被二次修改? 还有一点是图片, 许多人在图片php 项目代码的安全总结 无法加载时, 都用onerror去再次显示默认图片, 你是否有想过, 假如默认图片也无法显示呢? 是不是进入无限循环了?

4: PHP性能安全.

没有人能够说从来没遇到过无限循环导致apache崩溃的, 再优秀的人也都有相同的体会. 循环到底都产生了什么压力? 影响了哪些性能? 见一段代码:

foreach($array AS $val){ 
$payarr = include('pay.inc.php'); 
if($payarr[0] >= 360 * 1.25 + 568){ 
rr[] = $payarr[0]; 
}
}

这段代码是可以正常运行的, 不管你include是否成功, 不用判断是否有意义, 反正它是可以运行成功的. 当然, 它是无意义的. 要真正实现功能需求, 这段代码得增加好几行, 全部是判断. 在引入文件前, 是否应该先is_file确认文件是否存在? 既然是在循环中, 是否应该使用include_once? 条件值是数字运算, 是否写个直接值比较好?  在判断前, 是否应该先判断$payarr数组值存在与否?

5: 在写程序还是写判断.

上面的性能安全讲了缺少了许多判断, 那php是否有文档显示, 无谓的判断是否影响性能. 见代码.

ShoopD 网上商店系统
ShoopD 网上商店系统

用 php + mysql 驱动的在线商城系统,我们的目标为中国的中小企业及个人提供最简洁,最安全,最高效的在线商城解决方案,使用了自建的会员积分折扣功能,不同的会员组有不同的折扣,让您的商店吸引更多的后续客户。 系统自动加分处理功能,自动处理会员等级,免去人工处理的工作量,让您的商店运作起来更方便省事 采用了自建的直接模板技术,免去了模板解析时间,提高了代码利用效率 独立开发的购物车系统,使用最

下载
if(is_resource($a) === false || is_array($a) === false || is_bool($a) === false) 
echo $a;

假如我们每次使用变量时都这样判断? 是不是更安全? 代码是没错的, echo 仅打印字符串类型, 前面的判断也是符合逻辑思维. 这可能比较像严格型安全, 但如果php能够省略这点性能压力, 这样写也未必不是好事. 至少实现了需求, 也增加了安全性. 当然我们也会在想, 这样写的话, 我到底是在写程序还是在写判断?

6: 屏蔽错误.

许多人在学习php时, 老师关于安全上说过的一句话, 让他深深记住了, 屏蔽错误信息. 个人认为, 屏蔽错误应该是有前提条件的. 即屏蔽显示出来, 但不能屏蔽记录. 某天, 一个网页空白了, 让程序员查错误, 他告诉我, 错误被屏蔽了. 你认为这样合理? 我是让你屏蔽错误, 但没让你自己也把自己屏蔽了, 连你自己都不知道错误在哪, 普通用户能知道? 所以, 你在使用php.ini屏蔽, 或者@符时, 切记, 你自己得清楚错误发生在哪.

7: 接口安全.

相信大家都有做接口安全, 不管你们有木有, 反正我是有的. 通常的做法就是, 请求url,然后php打印值给客户端, 这样客户端就可以做判断处理, 或者显示处理. 事实上, 这种做法, 普通的php工作人员很容易通过firebug来得到url,即可知道你得到的参数是什么, 返回的值是什么, 这是潜在的危险, 比如商品评论, 商品价格. 为此, 我建议接口做一层token, 先取token然后再传参数. tokey所做的工作非常有意义, 可以计算用户是否正常, ip, 请求时间. 在下一步请求接口时, 便可判断. token值是加密的, 用户无法使用或者保留, 你也许会问, token就一串字符, 它可以一直保留着请求接口呀. 我滴神. 麻烦把请求时间使用起来呀.

8: 显示安全.

其实我自己也没完全搞懂显示安全这问题. 比如需要记录用户的签名吧,支持html代码. 那提交后, 入库mysql前, 数据是addslashes,还是htmlspecialchars呢? 假如是addslashes的话, 那前台显示时, 就有可能被人xss注入. 假如htmlspecialchars的话, 那前台显示时,怎么把html代码给显示出来? 同时又可以防止xss呢?一个网站那么多变量, 你有一个一个去思考这个问题么? 怎么防止攻击?

9: 蛋疼的安全.

不管你们是否相信,反正我相信sohpex会蛋疼,zend加密后的代码似乎在php5.3版本后无法使用. 你这安全做得太不靠谱了,原来是公关安全,竟然移交给程序员去实现.商业模式不带这样玩的.


PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 序列化
Python 序列化

本专题整合了python序列化、反序列化相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.02.02

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

91

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

27

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

11

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

5

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

5

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

62

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

55

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

27

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
NumPy 教程
NumPy 教程

共44课时 | 3.1万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号