最初,PHP HTML 檔案中的鏈接 <a> 是可點擊的。現在我需要添加 PHP "if-else" 以使 <a> 根據某些條件不可點擊。我怎樣才能以安全的方式實作這一目標?
<? if (condition) : ?>
<a> is clickable (
by using this.container.on('click', '.class-point-to-a-link', function (e) {
e.preventDefault();
e.stopPropagation();
)
<? else: ?>
probably using <span> or disable the link using css?
<? endif; ?>
我有幾個想法,但不確定什么是最佳實踐或你們會如何做。
在 else 分支中,我不會使用 <a> 標簽,而是使用 <span> 或其他一些標簽,因此 javascript on("click"...) 將找不到跨度并且不會觸發在所有的行動。但是我有一個安全問題,有人可能會檢查并將跨度更改為 <a>,然后鏈接將起作用。
向 <a> 添加一些 CSS 以使其不可點擊?我有同樣的安全問題。
在 on("click"...) 部分,我將根據后端的資料再添加一次條件。這是我能想到的最好的方法,但是有沒有更好的方法來不應用“if-else 條件”兩次?
這是一個有幾個小問題的問題。
uj5u.com熱心網友回復:
您可以向標簽添加一個類以使其不可點擊
就像是:
# php
<a class="<?php if (!$isEnabled) { echo "disabled" } ?>">Link</a>
# css
a.disabled {
pointer-events: none;
cursor: default;
}
uj5u.com熱心網友回復:
除非您希望它們處于活動狀態,否則在您的 PHP 代碼中根本不輸出鏈接是最安全的;如果鏈接在代碼中,但被禁用或隱藏,則只需查看頁面源代碼即可輕松找到它。任何攻擊者通常都會將此作為其武器庫中的第一批工具之一。
在 PHP 中行內包含/洗掉鏈接的最簡潔方法是三元運算子。例如:
echo ($enabled ? '<a href="https://example.com/url">' : '') . 'The text that would be inside the link.' . ($enabled ? '</a>' : '');
或者,如果您不喜歡三元運算子,您可以使用if陳述句以更長的形式進行操作:
if ($enabled) echo '<a href="https://example.com/url">';
echo 'The text that would be inside the link.';
if ($enabled) echo '</a>';
三元運算子通常會提高簡潔性,但有時會降低可讀性,盡管這是一個見仁見智的問題。出于這個原因,我很少使用它。
無論您采用哪種方式,用戶不僅永遠不會看到鏈接,而且鏈接在指向頁面的源代碼中也無處可見,除非您想要它。
如果人們在您不希望他們訪問該鏈接的情況下訪問該鏈接存在任何安全風險,那么這是我實施它的唯一方法。最好假設任何有惡意的用戶都會在代碼中找到任何相關的 URL 并手動輸入。當然,為了安全起見,我不會止步于此,因為如果用戶有可能看到您的網站是如何作業的,即,如果有時會為他們顯示鏈接并且他們能夠推斷出您的 URL 方案的邏輯和結構,他們也將能夠弄清楚如何動態地形成新的 URL,所以如果有任何 URL 你不希望某些人訪問,我會假設有人會嘗試訪問它并在腳本中為該 URL 本身構建保護措施。您甚至可能想要完全偏執(我推薦它!黑客很聰明!)并假設攻擊者能夠通過反復試驗或推斷以某種方式找出隱藏的 URL,并且始終將安全檢查構建到每個腳本中.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/349442.html
標籤:javascript php html css 条件语句
