直接将URL哈希参数值分配给Javascript变量是否不安全?
我正在研究如何在React中编写向导,并将每个步骤与URL相关联。作者使用URL的“哈希”部分指定步骤,并将其分配给直接将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
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') {
}
或者将其分配给变量并不是不安全的。使用该变量所做的操作可能不安全(请参见上面的列表)