久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

php安全之我見

 印度阿三17 2020-01-02

php安全之我見

1.把握整站的結(jié)構(gòu),,避免泄露站點(diǎn)敏感目錄

問題:老網(wǎng)站一般在跟目錄下放上index.php,、register.php、login.php,訪問注冊(cè)頁(yè)面跳轉(zhuǎn)到http://localhost/register.php,不易擴(kuò)展和維護(hù)

解決: 如果url為http://localhost/act=register這種,通過變量來跳轉(zhuǎn)到相應(yīng)頁(yè)面便于管理,dvwa靶機(jī)環(huán)境用的就是種搭建的思想

優(yōu)點(diǎn):1.不會(huì)暴露網(wǎng)站后臺(tái)絕對(duì)路徑http://localhost/act=admin.php推測(cè)不出網(wǎng)站的后臺(tái)目錄

???? 2.易維護(hù),不需修改太多代碼,http://localhost/act=admin.php想修改后臺(tái)地址,只需修改swtich的代碼和后臺(tái)文件名

???? 3.結(jié)構(gòu)嚴(yán)謹(jǐn),有層次感

???? 4.統(tǒng)一管理身份認(rèn)證,??稍谠谌肟谔庍M(jìn)行身份認(rèn)證,如游客不可訪問網(wǎng)站,只有登錄會(huì)員才有權(quán)限瀏覽,可在入口頁(yè)面管理

???? 5.通過絕對(duì)路徑訪問頁(yè)面報(bào)錯(cuò), http://localhost/register.php報(bào)錯(cuò)

在頁(yè)面添加<?php if(!defined('WWW_ROOT')) {header("HTTP/1.1 404 Not Found"); exit;} ?>實(shí)現(xiàn)

?

2.使用預(yù)編譯語句,避免sql注入

2.1.數(shù)據(jù)與代碼未區(qū)分

一條sql語句select * from admin where username='admin' password='xxxxx',admin和xxxx是數(shù)據(jù),如未做處理,用戶可以輸入admin=' or 1=1 #,這條語句變成select * from admin where username='' or 1=1 #' password='xxxxx' ,#將后面的代碼注釋掉,username=''為假,1=1為真,所以最終結(jié)果為真,將所有數(shù)據(jù)都查詢出來

2.2 預(yù)編譯

后端SQL語句:select * from admin where username='?' password='?',將這條sql語句編譯成stmt對(duì)象中,方法stmt->bind_param將用戶輸入的數(shù)據(jù)綁定到?的位置,這樣通過類來操作,所以sql語句的執(zhí)行都要進(jìn)行預(yù)編譯,。

Mysqli的預(yù)處理

1.創(chuàng)建連接

$conn = new mysqli($servername, $username, $password, $dbname);

2.預(yù)處理,也就是封裝成stmt類

$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");

3.綁定參數(shù)

$stmt->bind_param("sss", $firstname, $lastname, $email);

4.設(shè)置參數(shù)值

$firstname=’firstname’

5.執(zhí)行

$stmt->execute();

不過現(xiàn)在php常用pdo來進(jìn)行sql操作

1.pdo實(shí)例化

$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

2.預(yù)處理

$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (:firstname, :lastname, :email)");

3.綁定參數(shù)

$stmt->bindParam(':firstname', $firstname);

$stmt->bindParam(':lastname', $lastname);

?$stmt->bindParam(':email', $email);

4.賦值及執(zhí)行

$firstname = "John";

$lastname = "Doe";

$email = "[email protected]";

$stmt->execute();

?

3預(yù)防XSS代碼,,如果不需要使用cookie就不使用

不幸被xss注入,頁(yè)面不使用cookie,可降低危害

?

4. 限制用戶權(quán)限,預(yù)防CSRF

4.1舉一個(gè)例子,給某篇文章點(diǎn)贊,一開始設(shè)計(jì)的是get請(qǐng)求的方式,如A用戶點(diǎn)贊某篇文章的url請(qǐng)求是

http://localhost/?act=support&articleid=12,A用戶可以將這個(gè)請(qǐng)求發(fā)送給B用戶,B用戶點(diǎn)擊此鏈接也發(fā)起了一個(gè)點(diǎn)贊的請(qǐng)求

4.2post請(qǐng)求,。Get請(qǐng)求太容易利用,,如是設(shè)計(jì)成post來發(fā)起這個(gè)點(diǎn)贊的請(qǐng)求,如以下代碼:

<form action="http://localhost/?act=support" method="POST">

? <input type="hidden" value="12" name="articleid">

? <input type="submit" value="贊">

</form>

第一個(gè)input中出現(xiàn)了文章的id,可以構(gòu)造form表格,或ajax,或利用burpsuite構(gòu)造攻擊頁(yè)面,發(fā)送給B,B點(diǎn)擊發(fā)起了點(diǎn)贊的post請(qǐng)求

4.3驗(yàn)證碼來限制。這樣會(huì)降低用戶體驗(yàn)感,現(xiàn)實(shí)中也未見點(diǎn)個(gè)贊還需要輸入驗(yàn)證碼的情形,。

4.4增加token驗(yàn)證,。客戶端每次訪問http://localhost/?act=support&articleid=12頁(yè)面時(shí),服務(wù)器都會(huì)隨機(jī)生成一個(gè)token,并發(fā)送給客戶端,客戶端點(diǎn)贊時(shí)發(fā)送這個(gè)參數(shù)和服務(wù)端比較,如果一樣點(diǎn)贊成功,這里如果頁(yè)面存在xss的漏洞,可以通過js獲取到token值,成功發(fā)起攻擊,這種方式是目前常用且有效的手段

4.5 referer驗(yàn)證,。訪問http://localhost/?act=support&articleid=12點(diǎn)贊時(shí),驗(yàn)證請(qǐng)求包中的rerferer值,來驗(yàn)證其頁(yè)面來源,理想情況下,當(dāng)A用戶將攻擊頁(yè)面發(fā)給B,B點(diǎn)擊,referer來源肯定不一致導(dǎo)致點(diǎn)贊失效,但是攻擊者可以修改攻擊頁(yè)面的網(wǎng)站名,文件名,目錄名為點(diǎn)贊域名以混過rerferer檢測(cè)

?

5嚴(yán)格控制上傳文件類型

5.1前端驗(yàn)證不可靠的

5.2mime驗(yàn)證不可靠的

5.3白名單驗(yàn)證,就是取文件名, 如array('jpg','gif','png','bmp'),文件名為數(shù)組中的元素才可上傳,但是要注意解析漏洞

5.4 重命名,現(xiàn)在一般命名規(guī)則為日期時(shí)間 隨機(jī)數(shù) 白名單后綴對(duì)上傳的文件進(jìn)行重命名,這樣就算被上傳webshell,也因?yàn)楣粽邿o法猜測(cè)出文件名而導(dǎo)致無法訪問webshell

5.5禁止php代碼的執(zhí)行,可以參考文章webshell禁止你執(zhí)行

?

6.加密混淆javascript代碼,提高攻擊門檻

很多xss漏洞都是在本地閱讀網(wǎng)頁(yè)源碼發(fā)現(xiàn)的,加密javascript代碼提高閱讀門檻

?

7. 使用更高級(jí)的hash算法保存數(shù)據(jù)庫(kù)中重要信息

目前一般破解hash的手段

7.1彩虹表,??梢匀ス倬W(wǎng)下載,幾百g,經(jīng)常那這個(gè)去破解系統(tǒng)的sam文件

7.2 md5網(wǎng)站,百度一下就有,解密簡(jiǎn)單的

?

8.驗(yàn)證碼安全

驗(yàn)證驗(yàn)證碼是否安全可以通過一下幾個(gè)方式:

8.1 驗(yàn)證碼是否前端生成,可抓包繞過

8.2 單個(gè)驗(yàn)證碼是否有有效期,單個(gè)驗(yàn)證碼可重復(fù)使用

8.3 驗(yàn)證碼內(nèi)容輸出到客戶端,攻擊者可通過js代碼獲取到

8.4 驗(yàn)證碼太弱

驗(yàn)證碼太簡(jiǎn)單,導(dǎo)致開源的tessertact OCR就可以識(shí)別,。這里有一個(gè)最新機(jī)器識(shí)別繞過12306

火車票驗(yàn)證碼的實(shí)例

參考鏈接:https://www./PENETRATION/php-secure.html

來源:https://www./content-1-607301.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多