有没有一种安全的方法可以用url调用外部.php文件中的函数



我读到这样的东西可能存在安全风险:

调用文件:

<p><a href="'.plugin_dir_url( __FILE__ ).'form-add-edit.php?funct=add_edit_form">Add a Date</a></p>

被调用的文件/函数顶部有以下内容:

<?php 
if ( $_GET['funct'] == 'add_edit_form' ) {
add_edit_form();
} else {
die;
}
function add_edit_form() {
etc.
?>

如果答案是否定的,那么最佳做法是什么?我考虑过jQuery/ajax,但这似乎并没有更好。

更新:以上内容未经测试。这就是真正有效的方法,无论是否安全:

if ( isset($_GET['funct']) && $_GET['funct'] == 'add_edit_form' ) {
add_edit_form();
} 

如果做得好,它可以避免web应用程序的路由。我已经为我的应用程序实现了这个方案,但我不能推荐这种方法用于网站,因为URL对SEO不友好。

正如其他人所指出的,危险在于允许任何人在你的机器上执行arbitrary代码。为了避免这种情况,您需要首先对输入进行消毒。它可以通过Reflection来完成,因为只允许执行一种类型的类,只使用标量参数。

该方法的一大缺点是反射相对较慢,因此在该方案的性能方面取得成效之前,(到函数的(路由数量需要相当大。还有其他缺点,例如,当你想要面包屑时,你仍然需要有类和函数的分层映射,这使得传统路由的选择更加明显。

最新更新