所以我遇到了一个问题,有人试图使用网址执行php? 例如。 http://example.com/search.php?keyword= $ {@打印(MD5(123456789))}
我读到的内容这将允许攻击者将自定义代码注入服务器端脚本引擎。当攻击者可以控制输入到eval()函数调用的全部或部分输入字符串时,就会发生此漏洞。 Eval将执行参数作为代码。攻击的影响攻击者可以在您的服务器上执行任何PHP代码。
我正在使用mongoDB btw。我希望有人帮助我防止任何输入。 提前致谢
答案 0 :(得分:0)
目前尚不清楚您是否指的是使用PHP的eval()
或MongoDB的eval
命令(也由MongoDB::execute()
调用)。如果是后者,您可以通过多种方式将PHP值传递到JavaScript中,同时仍然无需在JS代码中将其连接(例如作为变量赋值)
eval
命令采用args
选项,允许您为已评估的函数提供参数。对于MongoDB::execute()
命令包装器,这将是第二个参数。如果您使用MongoCode对象定义JS函数,那么您也可以使用scope
构造函数参数将PHP值绑定到JS上下文中的变量。与args
的{{1}}选项非常相似,此处的PHP值将序列化为BSON,然后可用于JavaScript函数。除了布尔值,数字和字符串之外,您还可以传入数组,对象(真实对象或关联数组)和函数(通过在MongoCode对象中包装字符串)。
以下脚本应演示如何将各种PHP值传递给每个调用方法:
eval
答案 1 :(得分:-4)
您必须验证用户的每个输入数据。
您可以使用mysql_real_escape_string函数来转义特殊字符,
在使用关键字直接搜索之前进入搜索功能时,首先检查输入的关键字是否符合最低要求,就像要搜索整数值的数据一样,但输入的值是文本,所以在这种情况下而不是直接搜索,最好验证输入的数据。
无论如何,我们不能说一个网站是100%安全的漏洞,我们必须减少漏洞百分比。