我正在看一篇文章和编写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危险,但是反正不会将此输入转换为字符串吗?我看到的方式,只有在我在某个地方使用_dangerouslySetInnerHTML
时,这才是不安全的。
如果不安全:如何安全?
位置。看这里:https://www.w3schools.com/jsref/prop_loc_hash.asp
那么是什么使它变得危险?当您危险地使用它时,它会变得危险。使用它的危险方法:
- 将其与您的html(_dangerlysetinnerhtml)合并
- 在IT上调用eval()
- 在SQL查询中使用此输入
- ...
但是做STH。喜欢
if(location.hash === 'login') {
}
或将其分配给variabe并不是不安全的。您使用该变量的方法尽管可能不安全(请参见上面的列表)。