2017-12-03 5 views
0

私はan articleとReactの書き込みウィザードで、各ステップをURLに関連付けることを検討しています。作成者はURLの「ハッシュ」部分を使用してステップを指定し、this.state.currentStepに割り当てます。彼らはこれが危険であるとコメントしています。Javascript変数にURLハッシュパラメータ値を直接割り当てるのは危険ですか?

class BasicWizard extends React.Component { 
    constructor() { 
    this.state = { 
     steps: [] 
     currentStep: location.hash //obvs this is an unsafe way to do this -- this example is for conceptual purposes only 
    }; 
    } 

私の質問:

なぜこれが危険なのですか?私の推測ではXSSハザードですが、この入力はReactによって文字列に変換されませんか?私がそれを見る方法は、私がどこかで_dangerouslySetInnerHTMLを使用していた場合にのみ危険です。

安全でない場合:どのように安全にするのですか?

答えて

1

Location.hashは文字列を返すだけで安全ではありません。 ここをクリックしてください: https://www.w3schools.com/jsref/prop_loc_hash.asp

だから何が危険ですか? 危険な状態で使用すると危険です。 それを使用しての危険な方法:

  • は、それはあなたのhtml(_dangerouslySetInnerHTML)でエスケープを解除マージ
  • (evalの呼び出し)SQLクエリ
  • でこの入力エスケープされていない使用
  • それには...

しかし、sthしています。 like

if(location.hash === 'login') { 
} 

またはそれをvariabeに割り当てることは安全ではありません。あなたはその変数で何をするのですか?安全ではないかもしれません(上記のリストを参照)。

関連する問題