我有一个网站,用户输入数学方程式(表达式),然后根据网站提供的数据(常数)评估这些方程式.所需的数学运算,包括符号,算术运算min()
,max()
以及其他一些基本功能.一个示例等式可以是:
max(a * b + 100, a / b - 200)
Run Code Online (Sandbox Code Playgroud)
人们可以简单地eval()
使用Python,但我们都知道这会导致网站泄露.进行数学方程式评估的安全方法是什么?
Python有什么数学方程式解析和评估引擎
如果选择使用Python本身来评估表达式,那么任何Python沙箱都会限制Python,因此只有用户供应商操作符和函数可用.完全成熟的Python,如定义函数,应该完全禁用.子流程是可以的(参见PyPy沙箱).特别是,应该关闭用于利用内存和CPU使用的循环和其他漏洞.
任何其他方法,例如使用命令行二进制(bc)?
为了解决分辨率,我们需要缩放艺术 好的,因此堆栈中提到的常见来源是Syncfusion Metro Studio.
Metro Studio 2为XAML生成:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Viewbox x:Key="error">
<Grid Width="64" Height="64" Visibility="Visible">
<Grid Visibility="Visible">
<Rectangle Fill="#FFD21818" Visibility="Visible" />
<Ellipse Fill="#FFD21818" Visibility="Collapsed" />
<Path Data="M50.5,4.7500001C25.232973,4.75 4.75,25.232973 4.7500001,50.5 4.75,75.767029 25.232973,96.25 50.5,96.25 75.767029,96.25 96.25,75.767029 96.25,50.5 96.25,25.232973 75.767029,4.75 50.5,4.7500001z M50.5,0C78.390381,0 101,22.609621 101,50.5 101,78.390381 78.390381,101 50.5,101 22.609621,101 0,78.390381 0,50.5 0,22.609621 22.609621,0 50.5,0z" Stretch="Fill" Fill="#FFD21818" Visibility="Collapsed" />
</Grid>
<Path Data="F1M54.0573,47.8776L38.1771,31.9974 54.0547,16.1198C55.7604,14.4141 55.7604,11.6511 54.0573,9.94531 52.3516,8.23962 49.5859,8.23962 47.8802,9.94531L32.0026,25.8229 16.1224,9.94531C14.4167,8.23962 11.6511,8.23962 9.94794,9.94531 8.24219,11.6511 8.24219,14.4141 9.94794,16.1198L25.8255,32 9.94794,47.8776C8.24219,49.5834 8.24219,52.3477 9.94794,54.0534 11.6511,55.7572 14.4167,55.7585 16.1224,54.0534L32.0026,38.1745 47.8802,54.0534C49.5859,55.7585 52.3516,55.7572 54.0573,54.0534 55.7604,52.3477 …
Run Code Online (Sandbox Code Playgroud)