ReactJS是一款可以或许赞助开辟者构建用户接口的热点JavaScript库。在它的赞助下,开辟者可以构建出内容丰富的客户端或Web应用,并且提前加载内容以供给更好的用户体验。
大年夜设计角度来看,只要你可以或许按照开辟标准来应用ReactJS的话,它其实是异常安然的。然则在收集安然范沉闼楝没有任何器械是绝对安然的,而缺点的编程实践方法将导致类似脚本注入马脚之类的问题产生,这些缺点的编程方法包含:
2.应用用户供给的href属性来设备标签,或应用其他可注入的属性来设置其他的HTML标签(例如link标签);
- {
- _isReactElement: true,
- _store: {},
- type: “body”,
- props: {
- dangerouslySetInnerHTML: {
- __html:
- "<h1>Arbitrary HTML</h1>
- <script>alert(‘No CSP Support :(‘)</script>
- <a href=’http://danlec.com'>link</a>"
- }
- }
- }
3.显示地设置一个元素的dangerouslySetInnerHTML属性(危险的HTML标签属性);
4.向eval()传递用户供给的字符串数据;
接下来,让我们一路看一看这些潜在的问题将若何影响ReactJS应用法度榜样,并最终导致了脚本注入马脚的出现。
组件、属性和元素
在ReactJS应用法度榜样中,组件是最根本的构成部分。大年夜本质上来说,这些组件其实都类似于JavaScript函数,它们可以接收随便率性的输入数据,然后返回React元素。一个根本的ReactJS组件如下所示:
- class Welcome extends React.Component {
- render() {
- return <h1>Hello, {this.props.name}</h1>;
- }
- }
请留意膳绫擎代码中的return语句,这是一种JavaScript中的语句扩大(JSX)。在项目构建的过程中,JSX代码将会被编译成惯例的JavaScript(ES5)代码。下面给出的两种样本代码其功能是完全雷同的:
- // JSX
- const element = (
- <h1 className=”greeting”>
- Hello, world!
- </h1>
- );
- // Transpiled to createElement() call
- const element = React.createElement(
- ‘h1’,
- {className: ‘greeting’},
- ‘Hello, world!’
- );
- 在创建新的React元素时,应用的是component类中的createElement()函数:
- React.createElement(
推荐阅读
WannaCry勒索病毒:全球网络攻击的幕后黑客取走比特币赎金
此次的WannaCry病毒在蒲月份时袭击了世界各地,所用的文件加密恶意软件应用泄漏的NSA马脚进击Windows体系。据统计,WannaCry病毒感染了跨越30万台电脑,在美洲、欧洲、俄罗斯和中国令很多>>>详细阅读
地址:http://www.17bianji.com/lsqh/36639.html
1/2 1