国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP代碼安全和SQL Injection防范

2024-05-04 21:51:55
字體:
供稿:網(wǎng)友

在PHP編碼的時(shí)候,如果考慮到一些比較基本的安全問題,首先一點(diǎn):
1. 初始化你的變量

為什么這么說呢?我們看下面的代碼:

以下為引用的內(nèi)容:
if ($admin)
{
echo '登陸成功!';
include('admin.php');
}
else
{
echo '你不是管理員,無法進(jìn)行管理!';
}

好,我們看上面的代碼好像是能正常運(yùn)行,沒有問題,那么加入我提交一個(gè)非法的參數(shù)過去呢,那么效果會(huì)如何呢?比如我們的這個(gè)頁是 http://www.traget.com/login.php,那么我們提交:http://www.target.com/login.php?admin=1,呵呵,你想一些,我們是不是直接就是管理員了,直接進(jìn)行管理。
當(dāng)然,可能我們不會(huì)犯這么簡(jiǎn)單錯(cuò)的錯(cuò)誤,那么一些很隱秘的錯(cuò)誤也可能導(dǎo)致這個(gè)問題,比如最近暴出來的phpwind 1.3.6論壇有個(gè)漏洞,導(dǎo)致能夠直接拿到管理員權(quán)限,就是因?yàn)橛袀€(gè)$skin變量沒有初始化,導(dǎo)致了后面一系列問題。

那么我們?nèi)绾伪苊馍厦娴膯栴}呢?首先,從php.ini入手,把php.ini里面的register_global = off,就是不是所有的注冊(cè)變量為全局,那么就能避免了。但是,我們不是服務(wù)器管理員,只能從代碼上改進(jìn)了,那么我們?nèi)绾胃倪M(jìn)上面的代碼呢?我們改寫如下:

以下為引用的內(nèi)容:
$admin = 0; // 初始化變量
if ($_POST['admin_user'] && $_POST['admin_pass'])
{
// 判斷提交的管理員用戶名和密碼是不是對(duì)的相應(yīng)的處理代碼
// ...
$admin = 1;
}
else
{
$admin = 0;
}

 

if ($admin)
{
echo '登陸成功!';
include('admin.php');
}
else
{
echo '你不是管理員,無法進(jìn)行管理!';
}

那么這時(shí)候你再提交 http://www.target.com/login.php?admin=1 就不好使了,因?yàn)槲覀冊(cè)谝婚_始就把變量初始化為 $admin = 0 了,那么你就無法通過這個(gè)漏洞獲取管理員權(quán)限。


2. 防止SQL Injection (sql注射)

SQL 注射應(yīng)該是目前程序危害最大的了,包括最早從asp到php,基本上都是國內(nèi)這兩年流行的技術(shù),基本原理就是通過對(duì)提交變量的不過濾形成注入點(diǎn)然后使惡意用戶能夠提交一些sql查詢語句,導(dǎo)致重要數(shù)據(jù)被竊取、數(shù)據(jù)丟失或者損壞,或者被入侵到后臺(tái)管理。
基本原理我就不說了,我們看看下面兩篇文章就很明白了:
http://www.4ngel.net/article/36.htm
http://www.4ngel.net/article/30.htm

那么我們既然了解了基本的注射入侵的方式,那么我們?nèi)绾稳シ婪赌兀窟@個(gè)就應(yīng)該我們從代碼去入手了。

共4頁上一頁1234下一頁
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 江油市| 石屏县| 沂源县| 西乡县| 东海县| 古浪县| 靖州| 怀柔区| 日照市| 涪陵区| 高尔夫| 垣曲县| 安多县| 泰宁县| 沐川县| 弥勒县| 农安县| 新竹县| 望城县| 清水县| 中超| 鄂托克旗| 淅川县| 仲巴县| 阜南县| 荆州市| 齐河县| 海宁市| 上虞市| 绵竹市| 房产| 改则县| 扎兰屯市| 宾川县| 大洼县| 长葛市| 长葛市| 肇州县| 鹰潭市| 宁乡县| 巨鹿县|