<p>Metinfo 8月1日升级了版本,修复了一个影响小于等于5.3.17版本(几乎可以追溯到所有5.x版本)的SQL注入漏洞。这个SQL注入漏洞不受软WAF影响,可以直接获取数据,影响较广。</p> <h2 id="0x01"><a class="toclink" href="#0x01">0x01. 漏洞原理分析</a></h2> <p>漏洞出现在 /include/global.func.php 文件的 jump_pseudo 函数:</p> <div class="codehilite"><pre><span></span><span class="cp"><?php</span> <span class="cm">/*静态页面跳转*/</span> <span class="k">function</span> <span class="nf">jump_pseu...</span></pre></div>
黑客技术官网地址:http://www.hackdig.com/
译者:WisFree
预估稿费:200RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
ReactJS是一款能够帮助开发者构建用户接口的热门JavaScript库。在它的帮助下,开发者可以构建出内容丰富的客户端或Web应用,并且提前加载内容以提供更好的用户体验。
从设计角度来看,只要你能够按照开发标准来使用ReactJS的话,它其实是非常安全的。但是在网络安全领域中,没有任何东西是绝对安全的,而错误的编程实践方式将导致类似脚本注入漏洞之类的问题产生,这些错误的编程方式包括:
1.利用用户提供的对象来创建React组件;
2.利用用户提供的href属性来配置<a>标签,或利用其他可注入的属性来设置其他的HTML标签(例如link标签);
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(
type,
[props],
[...children]
)
这个函数可以接受三个参数:
1.type参数:该参数可以是一个标签名(例如'div'或'span'),或一个component类。但是在React Native中只允许component类。
2.props参数:该参数包含一个传递给新元素的属性列表。
3.children参数:该参数包含新元素的子节点。
没有评论:
发表评论