草庐IT

eval-stdin

全部标签

php - 将 PHP 代码存储在数据库中,并在运行时对它进行 eval() 处理,不安全吗?

我构建了一个程序来存储、检索和eval()s来自SQLite数据库的代码。在我因为糟糕的编码习惯而受到指责之前,让我们将其视为理论上的,并假装我这样做有充分的理由。抛开所有其他考虑因素,假设用户输入不是一个因素,将PHP代码存储在数据库中并使用eval()运行它是否存在固有的安全风险?说明:我不是eval()ing用户提交的内容。SQLiteDB文件与我的其他文件位于同一目录中,并且应用了相同的安全性。请不要对性能、缓存等发表评论。我知道所有这些。 最佳答案 eval()本身并不安全。这只是不好的做法,不清楚并且会引发一大堆错误和安

php - 使用 eval 解析表单输入的方程式的最安全方法

我想知道在PHP中使用eval()来解析用户填写表单时输入的公式时应该检查哪些类型的内容。我看过很多关于eval()的答案,但似乎并非所有人都同意。这是我收集到的:不要对字符串使用eval(这可能是个问题,因为它是我需要解析的公式)去除来自表单的输入(我不完全确定我需要去除哪些东西)Eval可能是邪恶的,也可能不是邪恶的,并且存在安全风险(是否有其他方法可以解析字符串中的方程式?)你们认为我应该怎么做?编辑:我尝试了eval方法,虽然它确实有效,但我使用的环境卫生不支持两个以上的操作数。由于我真的不想编写自己的(可能不安全的)卫生正则表达式,所以我将查找并使用预先编写的数学类。感谢大家

php - 如何在 PHP 中返回常量或文本字符串——eval() 是正确的选择

我在mysql表中有一行,其列包含:Thisisatest.我在同一个mysql表中有另一行,其同一列包含:K_IM_A_CONSTANT在PHP脚本的前面,存在这行代码:define(K_IM_A_CONSTANT,'Thisisaconstant.');我怎样才能回显列的内容,返回的值要么是“这是一个测试”。或“这是一个常量。”,取决于所选的行?eval()是这样做的方法吗?如果是这样,eval()语法看起来如何?我在尝试让eval()工作时遇到了太多错误。感谢您的帮助。 最佳答案 使用constant功能:if(defined

PHP readline() 当 STDIN 不是键盘时

我正在编写一个能够从标准输入读取然后请求确认的脚本。当我直接运行它时:$phpscript.phpinputdata^DAreyousure?但我正在尝试使用一个文件作为STDIN来运行它。在这种情况下,readline()返回false并且不提示确认。$phpscript.php或$echo"foobar"|phpscript.php以这种方式调用此脚本时,如何从STDIN和键盘读取两者?谢谢。 最佳答案 使用fgetc使用STDIN函数。请参见下面的示例。$input=fgets(STDIN,1024);echo"\nAreyo

没有 Eval 的 PHP 动态鸭子类型(duck typing)

例子:func();//Returnsainthiscase有没有什么方法可以不使用eval()来做到这一点? 最佳答案 当然你可以不用eval()。PHP会将包含类名的字符串或文字作为new运算符的参数。$duck=new$input;//parenthesesareoptionalecho$duck->func(); 关于没有Eval的PHP动态鸭子类型(ducktyping),我们在StackOverflow上找到一个类似的问题: https://sta

PHP如何将eval(0分配给变量

此代码返回“始终”,但我不想要它。我需要把这个变量带到别处。抱歉英语不好。编辑:PEOPLE!!!!!!!此示例代码。我知道在这种情况下不需要eval(),但我的其他项目中的代码将需要。我需要将eval()返回的内容输入到变量中。" 最佳答案 这是获取结果的简单方法:要获取eval()的返回值,您需要在评估的代码中返回一些内容,例如:$xs=eval("return'1'=='0'?'never':'always';");echo$xs;//echoes'always' 关于PHP如何将

php eval函数和性能

我正在创建一个Web应用程序,我希望将对用户的所有响应存储在一个语言文件中以便于编辑。所以我使用eval()来管理动态消息,就像这样:$msg='Hello$user,yourfavoritecoloris$color';$colors=array("red","green","blue","yellow");$users=array("bob","craig","ted","dirtysanchez");foreach($usersas$key=>$user){$color=$colors[$key];eval("\$newmsg=\"$msg\";");echo$newmsg;}我

PHP 的 create_function() 与仅使用 eval()

在PHP中,您有create_function()函数,它创建一个唯一的命名lambda函数,如下所示:$myFunction=create_function('$foo','return$foo;');$myFunction('bar');//Returnsbar这实际上是不是更好(除了更容易)然后做:do{$myFunction='createdFunction_'.rand();}while(function_exists($myFunction));eval("function$myFunction(\$foo){return\$foo;}");$myFunction('bar

php - 如何处理 php 中 eval 函数的解析错误

我正在尝试使用php的eval函数。但我一直在处理解析错误。比如考虑我是否有像1..或1++这样的边缘情况如果给我解析错误:语法错误,.....有人知道如何处理语法错误或如何绕过错误消息吗?我想给出更好的错误信息。是否可以将错误消息存储到变量中?TIA 最佳答案 来自manualAsofPHP7,ifthereisaparseerrorintheevaluatedcode,eval()throwsaParseErrorexception.BeforePHP7,inthiscaseeval()returnedFALSEandexecu

php - PHP 的 eval() 如何计算行号?

我在安装Magento的过程中处理了一大块非常讨厌的第三方代码,我在跟踪它的线程时遇到了一些麻烦。这是我看到的错误消息:PHPParseerror:syntaxerror,unexpected']'in/chroot/home/user/example.com/html/dev4/app/code/local/company/PluginName/Model/Module/License/Light/Performer/Reader.php(36):eval()'dcode(18):eval()'dcode(1302):eval()'dcodeonline1我已经在Reader.php