在我的网站中使用模板函数是一个好主意,它可以检索用PHP Smarty生成的HTML并用ajax响应显示


Is a good idea use template function in my site that retrieve HTML generated with PHP Smarty and display with ajax response?

我的PHP框架

public static function insertAction(){
   .......
   'MVCApplication::getSmarty()->display('common/inserted.tpl');
}

使用Ajax响应向用户显示:(JQuery)

success: function(response){
    $("body").html(response);
}

我想创建一个所有操作都不刷新页面的网站(即,我想要一个只有一个页面索引.php的动态网站)

我的问题是关于安全!我在网上读过一些关于脚本注入的文章,我担心任何恶意的人都会截获服务器的响应,并在我的服务器响应中添加错误的代码!如何提高我的框架安全性?

(最终,我需要在.tpl-smarty模板中执行脚本,这也将输出到ajax响应…)

取决于您谈论的是谁的安全性,即Web服务器还是客户端
根据您在代码中列出的内容,服务器只向AJAX客户端发送数据,因此它不易受到脚本注入攻击,因为它不会对收到的脚本执行操作。(虽然它可能正在解析GET/POST响应,但这是另一个主题)

事实上,使用smarty对安全性没有影响,它只是一个模板工具。

客户端上的Javascript本质上是不安全的。如果您担心脚本注入会返回到客户端,请不要使用javascript。作为替代方案,您可以尝试剥离任何返回的AJAX数据,以删除HTML或嵌入的脚本。

使用类似于:var StrippedString=OriginalString.replace(/(<([^>]+)>)/ig,");发件人:http://css-tricks.com/snippets/javascript/strip-html-tags-in-javascript/