直接将URL哈希参数值分配给Javascript变量是否不安全?

直接将URL哈希参数值分配给Javascript变量是否不安全?,javascript,reactjs,xss,Javascript,Reactjs,Xss,我正在研究如何在React中编写向导,并将每个步骤与URL相关联。作者使用URL的“哈希”部分指定步骤,并将其分配给this.state.currentStep。他们评论说这是不安全的 class BasicWizard extends React.Component { constructor() { this.state = { steps: [] currentStep: location.hash //obvs this is an unsafe wa

我正在研究如何在React中编写向导,并将每个步骤与URL相关联。作者使用URL的“哈希”部分指定步骤,并将其分配给
this.state.currentStep
。他们评论说这是不安全的

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转换成字符串吗?在我看来,如果我在某处使用
\u危险的setinenerHTML
,这才是不安全的


如果不安全:如何确保安全?

Location.hash不安全,因为它只返回一个字符串。 请看这里:

那么是什么让它变得危险呢? 当你危险地使用它时,它就会变得危险。 危险的使用方法:

  • 将它与您的html(危险的html)合并
  • 对其调用eval()
  • 在sql查询中使用此输入不带scaped
但是像这样做

if(location.hash === 'login') {
}
或者将其分配给变量并不是不安全的。使用该变量所做的操作可能不安全(请参见上面的列表)