热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

全方位解疑PHP应用问题

谨慎使用比较运算符,因为PHP是无类型的,但底层的C实现引擎是有类型的。最终都有类型转换,比如0”abc”结果是true,这可能不是我们想要的在语义

谨慎使用==比较运算符,因为PHP是无类型的,但底层的C实现引擎是有类型的。最终都有类型转换,比如0==”abc”结果是true,这可能不是我们想要的

在语义上是某种明确类型的地方都要使用相关函数明确转换一下:intval。。。
在一个地方统一定义PHP的文件包含路径,这样在项目的各个地方包含文件的时候不要带上路径,只要文件名就行了,便于文件的转移

PHP应用问题还有一个就是不要直接在函数,类方法中使用PHP的全局变量,而应该是提供一个单独访问全局变量的代理,可以是对象,也可以只是一个简单的函数,如果是在类中访问全局变量,修改为使用代理全局变量的对象,这样两个对象之间有明确的依赖关系,不要在函数内部直接使用全局变量或者global 外面的变量,一个函数只应该使用函数参数传递进来的数据。自己尽量不要使用全局的变量然后到处global, 注意表单的重复提交。这可以采用令牌。

决定系统是单入口还是多入口

注意编码:文件存储编码,页面编码,数据库编码,用户的操作系统编码(用户直接在地址上输入内容时FF,Opera会把内容根据操作系统的编码urlencode编码,而IE6原样)

不要暴露文件的路径

提交请求后用户关掉浏览器或者点击浏览器的停止或者其它原因网络断掉后PHP是要继续处理还是停止处理,PHP如何知道以上情况:connection-handling(ignore_user_abort,register_shutdown_function,connection_status…)

时区问题,如果应用是分布式的话

explode应用在一个空值上将产生一个包含1项内容的数组:array(”"),但后者不是为false。也就是:null是假值,但explode(’,,null)后是真值,所以要小心if(explode(’,,$var))这种条件

$var = null;isset($var)结果为false。

PHP应用问题之安全问题

验证输入,不要相信来自用户的数据(GET,POST,COOKIE),对于一个PHP应用,应该统一的对这些数据进行过滤处理,比如编码html标签防止XSS,防止sql注入。

同时对于需要验证的内容,PHP要在验证一次,因为客户端的各种验证都可以很容易的跳过(伪表单,禁用js及firebug这些可以随便修改html的工具)。

要注意用户提交的数据大小。比如post数据或者get数据太大可能会有缓冲溢出问题

小心服务器的非PHP文件。如果应用可以上传或者下载文件,要避免直接通过文件名读取文件而文件名是用户提供的情况,可能用户会提供一些自己不该看到的文件,但PHP程序却读出来了。同时不要在返回的html中显示文件路径,文件的保存路径不应让用户看到,用户可能会根据这些路径猜出其它自己不该看到的文件

如果会话是保存在文件中的,并且web服务器上还有其它未知的用户(比如出租的web主机),应该修改会话文件的保存位置,或者把会话通过PHP的会话handler写到数据库中,因为会话默认保存在临时目录中,其它人可以访问到,如果会话中保存了密码之类的信息就很危险。

以上就是PHP应用问题的相关解决办法。


教程网址:

欢迎收藏∩_∩但请保留本文链接。


推荐阅读
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 我在使用 AngularJS 的路由功能开发单页应用 (SPA),但需要支持 IE7(包括 IE8 的 IE7 兼容模式)。我希望浏览器的历史记录功能能够正常工作,即使需要使用 jQuery 插件。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 如何有效防御网站中的SQL注入攻击
    本期文章将深入探讨网站如何有效防御SQL注入攻击。我们将从技术层面详细解析防范措施,并结合实际案例进行阐述,旨在帮助读者全面了解并掌握有效的防护策略。希望本文能为您的网络安全提供有益参考。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
author-avatar
plz乐呵呵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有