簡體   English   中英

我可以通過使用會話來阻止XSS攻擊嗎?

[英]Can i prevent an XSS attack by using a session?

我們可以在每次用戶加載頁面時使用會話來防止XSS攻擊嗎?

這是我的PHP代碼。

session_start();

if (isset($_GET["content"]) && isset($_GET["session"] && isset($_SESSION["code"])) {
    if ($_SESSION["code"] == $_GET["session"]) {
        echo $_GET["content"];
    }
}

$code = rand(1000, 9000);

$_SESSION["code"] = $code;

echo(str_replace("{CODE}", $code, $html);

例如,這是URL

http://example.com/index.php?content=xxxxx&session=GENERATED_SESSION

其中GENERATED_SESSION是我的JavaScript代碼添加的代碼。

這是一個由iframe加載更多次的頁面,該代碼可以阻止XSS?

我認為您試圖阻止CSRF(跨站點請求偽造)而不是XSS(跨站點腳本)。

XSS阻止人們將惡意代碼注入您的應用程序中,例如,如果您有一個帶有評論表單的博客,有人可以在您的評論框中輸入JS <script></script>標記,以便當他們的評論加載到您的評論框中時博客,JS被執行了。

您的方法是防止CSRF的常用方法(雖然我不確定JS在哪里進入)。

生成並存儲在會話中的“不可猜測”令牌,此令牌的值在表單中的隱藏表單元素中呈現,當有人提交表單時,您應檢查隱藏字段中的值是否與會話中的值,與您正在做的完全一樣(沒有語法錯誤:))。

我個人會使用一種更好的機制來生成令牌,因為你生成的隨機數可能會“僥幸”。

另外,您通常只應使用GET方法進行搜索/讀取請求,因此CSRF保護不會真正保護任何內容,您還需要考慮用戶刷新搜索時會發生什么。

每當您更改某些內容(即創建,更新或刪除)時,最好使用POST表單方法,但適用相同的CSRF原則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM