我正在查看an article以及在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转换为字符串吗?我看待它的方式,如果我在某处使用_dangerouslySetInnerHTML
,这只会是不安全的。
如果不安全:如何安全?
答案 0 :(得分:1)
Location.hash不安全,因为它只返回一个字符串。 看这里: https://www.w3schools.com/jsref/prop_loc_hash.asp
那么是什么让它变得危险? 危险地使用它会变得危险。 危险的使用方法:
但是做某事。像
if(location.hash === 'login') {
}
或将其分配给变量并不是不安全的。你使用该变量做什么虽然可能不安全(见上面的清单)。