中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

PHP程序員編程注意事項

1.不轉意html entities 
  一個基本的常識:所有不可信任的輸入(特別是用戶從form中提交的數(shù)據(jù)) ,輸出之前都要轉意。 echo $_GET['usename'] ;
這個例子有可能輸出:
<script>/*更改admin密碼的腳本或設置cookie的腳本*/</script>
這是一個明顯的安全隱患,除非你保證你的用戶都正確的輸入。
如何修復 :
我們需要將"< ",">","and" 等轉換成正確的HTML表示(< , >', and "),函數(shù)htmlspecialchars 和 htmlentities()正是干這個活的。
正確的方法: 
復制代碼 代碼如下:
echo htmlspecialchars($_GET['username'], ENT_QUOTES); 


2. 不轉意SQL輸入
我曾經(jīng)在一篇文章中最簡單的防止sql注入的方法(php+mysql中)討論過這個問題并給出了一個簡單的方法 。有人對我說,他們已經(jīng)在php.ini中將magic_quotes設置為On,所以不必擔心這個問題,但是不是所有的輸入都是從$_GET, $_POST或 $_COOKIE中的得到的!
如何修復:

和在最簡單的防止sql注入的方法(php+mysql中)中一樣我還是推薦使用mysql_real_escape_string()函數(shù) 正確做法:
復制代碼 代碼如下:
<?php 
$sql = "Update users SET 
name='.mysql_real_escape_string($name).' 
Where id='.mysql_real_escape_string ($id).'"; 
mysql_query($sql); 
?> 


3.錯誤的使用HTTP-header 相關的函數(shù): header(), session_start(), setcookie()
遇到過這個警告嗎?"warning: Cannot add header information - headers already sent [....]

每次從服務器下載一個網(wǎng)頁的時候,服務器的輸出都分成兩個部分:頭部和正文。
頭部包含了一些非可視的數(shù)據(jù),例如cookie。頭部總是先到達。正文部分包括可視的html,圖片等數(shù)據(jù)。
如果output_buffering設置為Off,所有的HTTP-header相關的函數(shù)必須在有輸出之前調用。問題在于你在一個環(huán)境中開發(fā),而在部署到另一個環(huán)境中去的時候,output_buffering的設置可能不一樣。結果轉向停止了,cookie和session都沒有正確的設置........。

如何修復:
確保在輸出之前調用http-header相關的函數(shù),并且令output_buffering = Off


4. Require 或 include 的文件使用不安全的數(shù)據(jù)
再次強調:不要相信不是你自己顯式聲明的數(shù)據(jù)。不要 Include 或 require 從$_GET, $_POST 或 $_COOKIE 中得到的文件。

例如:
index.php
復制代碼 代碼如下:
<? 
//including header, config, database connection, etc 
include($_GET['filename']); 
//including footer 
?> 


現(xiàn)在任一個黑客現(xiàn)在都可以用:http://www.yourdomain.com/index.php?filename=anyfile.txt
來獲取你的機密信息,或執(zhí)行一個php腳本。 
如果allow_url_fopen=On,你更是死定了:
試試這個輸入:
http://www.yourdomain.com/index.php?filename=http%3A%2F%2Fdomain.com%2Fphphack.php
現(xiàn)在你的網(wǎng)頁中包含了http://www.youaredoomed.com/phphack.php的輸出. 黑客可以發(fā)送垃圾郵件,改變密碼,刪除文件等等。只要你能想得到。
如何修復:
你必須自己控制哪些文件可以包含在的include或require指令中。

下面是一個快速但不全面的解決方法:
復制代碼 代碼如下:
<? 
//Include only files that are allowed. 
$allowedFiles = array('file1.txt','file2.txt','file3.txt'); 
if(in_array((string)$_GET['filename'],$allowedFiles)) { 
include($_GET['filename']); 

else{ 
exit('not allowed'); 

?> 



5. 語法錯誤
語法錯誤包括所有的詞法和語法錯誤,太常見了,以至于我不得不在這里列出。解決辦法就是認真學習php的語法,仔細一點不要漏掉一個括號,大括號,分號,引號。還有就是換個好的編輯器,就不要用記事本了!

6.很少使用或不用面向對象
很多的項目都沒有使用php的面向對象技術,結果就是代碼的維護變得非常耗時耗力。php支持的面向對象技術越來越多,越來越好,我們沒有理由不使用面向對象。

7. 不使用framework
95% 的php項目都在做同樣的四件事: Create, edit, list 和delete. 現(xiàn)在有很多MVC的框架來幫我們完成這四件事,我們?yōu)楹尾皇褂盟麄兡兀?

8. 不知道php中已經(jīng)有的功能
php的核心包含很多功能。很多程序員重復的發(fā)明輪子。浪費了大量時間。編碼之前搜索一下php mamual,在google上檢索一下,也許會有新的發(fā)現(xiàn)!php中的exec()是一個強大的函數(shù),可以執(zhí)行cmd shell,并把執(zhí)行結果的最后一行以字符串的形式返回。考慮到安全可以使用EscapeShellCmd() 

9.使用舊版本的php

很多程序員還在使用php4,在php4上開發(fā)不能充分發(fā)揮php的潛能,還存在一些安全的隱患。轉到php5上來吧,并不費很多功夫。大部分php4程序只要改動很少的語句甚至無需改動就可以遷移到php5上來。根據(jù)http://www.nexen.NET的調查 只有12%的php服務器使用php5,所以有88%的php開發(fā)者還在使用php4.

10.對引號做兩次轉意

見過網(wǎng)頁中出現(xiàn)/'或/'"嗎?這通常是因為在開發(fā)者的環(huán)境中magic_quotes 設置為off,而在部署的服務器上magic_quotes =on. php會在 GET, POST 和 COOKIE中的數(shù)據(jù)上重復運行addslashes() 。
原始文本:
It's a string

magic quotes on :
It/'s a string
又運行一次
addslashes():
It//'s a string

HTML輸出:
It/'s a string

還有一種情況就是,用戶一開始輸入了錯誤的登錄信息,服務器檢測到錯誤輸入后,輸出同樣的form要求用戶再次輸入,導致用戶的輸入轉意兩次!

php技術PHP程序員編程注意事項,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产sm主人调教女m视频 | 四虎成人精品永久免费av九九 | 欧美a在线观看 | 99免费在线观看视频 | 国产在线精品一区二区 | 一区视频在线播放 | 久国久产久精永久网页 | 亚洲日韩欧美一区二区在线 | 国产精品久久久久一区二区三区 | 欧美成年网站 | 美女久久 | 免费激情av | 精品国偷自产在线 | 欧美日韩国产在线观看 | 精品久久久久久国产 | 亚洲精品中文字幕在线观看 | 欧美一区二区在线观看视频 | 高清国产午夜精品久久久久久 | www.亚洲视频 | 欧美视频一区 | 亚洲 中文 欧美 日韩 在线观看 | 91久久久久久久 | 午夜精品一区 | 亚洲国产视频一区 | 亚洲a视频| 欧美精品在线播放 | 91久久国产综合久久 | 欧美电影免费观看 | 欧美精品一区二区免费 | 91电影| 欧美黄色精品 | 欧美成人免费在线视频 | 国产精品国产三级国产aⅴ中文 | 亚洲免费在线 | 国产精品一区久久久 | 国产成人精品久久二区二区91 | 国产精品成人国产乱一区 | 鲁大师一区影视 | 日韩欧美国产精品一区 | 中文字幕一区在线观看视频 | 国产精品国产精品国产专区不片 |