2016-10-06 12 views
0

ボタンを作成しましたが、そのボタンがクリックされた後に投稿が許可されるのはhereです。フォームの送信ボタンを無効にする - InnerHTML(セキュリティリスク)とCSSスタイル(再入力)

  1. InnerHTMLはセキュリティ上のリスクを伴いますか? (私はオンラインコースInnerHTMLが回避されることになったことを に見て)

  2. 私はボタンCSSをリセットするように思われるポインタ/カーソルを無効にして、私は再びJavascriptにボタンのinline CSSを再入力する必要があります。どうしてこれなの?

    結果

    function change_button() { 
    document.getElementById('get-results').innerHTML = 'Processing....'; 
    document.getElementById('get-results').style.cssText = 'pointer-events:none !important;cursor:not-allowed !important; height: 44px; color:#fff; font-size:18px; padding: 9px 20px; background-color: #000; display:inline-block; padding-right: 20px;' 
    } 
    
+0

あなただけのポインタイベントに、その要素の全体のCSSを設定しているので、それは(あなたは、しかし、この例では、バックで余分なものを追加しました)です。余計なものがなければ、その行はCSSスタイルオブジェクト全体をそのCSSルールセットで上書きするので、{color:#334466; width:12px;} - > {pointer-events:none;}を実行します。 – Feathercrown

+0

ボタンのスタイルをリセットせずにJS内に新しいポインタイベント/カーソルCSSを追加することは可能ですか?これが本当に可能な場合は、Codepenをフォークして表示してください。 – me9867

+0

はいできます。使用するelement.style.backgroundColor = '#334466';あなたが必要とする財産を代用してください。参照してください:https://www.kirupa.com/html5/setting_css_styles_using_javascript.htm – Feathercrown

答えて

0

それはちょうど、さらにクリックを防ぐべき、無効にボタンを設定するには、あなたはどちらかあなたのCSSで約混乱する必要はありませんより良いおそらくです。コメントに記載されているように、現在のコードはボタンに適用されている既存のスタイルを消去します。

しかし、ブラウザの更新など、重複した送信が発生する可能性があるため、送信済みデータの二重処理を防止するためのサーバー側のメカニズムも実装しています。

innerHTMLの使用に関連するセキュリティリスクについては、私はこのケースでは何も認識していません...どのようなリスクについて懸念していますか?

ところで、あなたのonclickに 'this'への参照を渡すと、getElementByIdを使用せずにクリックされたボタンを簡単に参照することができます。数2の場合

function change_button(btn) { 
 
    btn.disabled = true; 
 
    btn.innerHTML = "Processing..."; 
 
}
<button type="button" onclick="change_button(this);" style="cursor: pointer; height: 44px; color:#fff; font-size:18px; padding: 9px 20px; background-color: #000; display:inline-block; padding-right: 20px;" id="get-results">Results</button>

+0

それでInnerHTMLは使えますか?セキュリティリスクや何もありません(クライアント側の入力がある場合などは危険です)。 – me9867

+0

innerHTMLを単純な文字列に置き換えるとセキュリティリスクが発生する可能性があります定数( "処理中...")。コンテンツにマークアップ/スクリプトが含まれていたり、ユーザーの入力から取得されたりしている場合、セキュリティ上の意味があると確信しています。これは、コンテンツタイプが使用されている場所であればどこでも適用されますが、特にinnerHTMLプロパティとは関係ありません。 – beercohol

関連する問題