AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.05.2009, 09:05   #1  
Blog bot is offline
Blog bot
Участник
 
25,475 / 846 (79) +++++++
Регистрация: 28.10.2006
gatesasbait: Basic calculator using runbuf() in Dynamics AX
Источник: http://gatesasbait.spaces.live.com/B...B9F5!398.entry
==============


Good evening,

If you ever need to build a mathematical calculator in Dynamics AX, you might consider using runbuf() as basis for the code. The only critical considerations are to make sure that an attacker cannot use the calculator to execute code other than mathematical functions.

Here’s a quick example of what the calc() code for the calculator might look like (in a job):

X++:
public static void calcExample(Args _args)
{
 real ret;
 str formula = "(30+20)*(2)"; //user might type this into a textbox on a form
 ;
 ret = runbuf(
 strfmt(
 "real calc()\n"
 +"{\n"
 +"    ;\n"
 +"    return %1;\n"
 +"}\n", formula));

 info(SysQuery::value(ret));
}

An added advantage of using runbuf() this way, is that it gives the user the ability to use mathematical functions defined in AX like abs() acos(), asin(), atan(), etc.



Источник: http://gatesasbait.spaces.live.com/B...B9F5!398.entry
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
Старый 27.05.2009, 11:24   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
маленький комментарий: помните о безопасном программировании!
сейчас в коде нет никаких проверок на валидность, никакой проверки на компилируемость, никакой обработки ошибок, никаких try/catch.
а также никакой проверки на безопасность пользовательского кода. А ведь он может вызвать shell с командой format

в боевых условиях такое грязное программирование может быть чревато страшными и необъяснимыми глюками.
__________________
полезное на axForum, github, vk, coub.
Старый 27.05.2009, 12:12   #3  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1234 (44) ++++++++
Регистрация: 11.04.2008
Согласен. Безопасность нужно учесть.
1. Добавить проверку на содержание только арифметических составляющих и чисел.
2. (Правильное оформление) Результат арифметического выражения: "2*2" в 4. Как?

А то добавит работник себе бонуса к зарплате.., за что с кого-нибудь потом спросят...
Старый 27.05.2009, 13:52   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
А еще можно просто пользоваться калькулятором в меню Сервис\Калькулятор
It's secure, great functionality, 0 effort - GREAT
Старый 27.05.2009, 14:10   #5  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1234 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от kashperuk Посмотреть сообщение
А еще можно просто пользоваться калькулятором в меню Сервис\Калькулятор
It's secure, great functionality, 0 effort - GREAT
Да, если оперативно что-то посчитать.

Но на самом деле пример полезен. Мне вот доводилось иметь дело с функциональностью, которая подразумевала ввод арифметических выражений пользователем в строки формы (набодобие excel). Затем при разноске эти выражения считались. Т.е. можно было строить сложные пользовательские выражения.
За это сообщение автора поблагодарили: gatesasbait (1).
Старый 29.05.2009, 00:13   #6  
gatesasbait is offline
gatesasbait
Ax & C# programmer
 
5 / 18 (1) ++
Регистрация: 29.05.2009
Адрес: Montreal, Quebec, Canada
Mazzy: I totally agree with you. If opening up calls to runbuf() for users, we need to be vary careful and remove any calls to functions that are not mathematical. Take for example the product builder, I do not believe it is secured, attack is possible, as well as when creating data import definitions, the conversion tabs are open for attack too.

KashperUK: True, the standard microsoft calc.exe is the ideal and safest calculator, however the idea of using runbuf() came from a brainstorm for a customer that needed a way to create custom formulas for forecasting in AX, I proposed using runbuf, I however will not be taking care of the actual project. The choice is up to them.

Great forum btw, and a very useful bot for the AX community.
За это сообщение автора поблагодарили: mazzy (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Developer for Microsoft Dynamics AX Certification Roadmap Blog bot DAX Blogs 1 13.05.2009 16:17
gatesasbait: Support of basic operations on Sets in Dynamics AX Blog bot DAX Blogs 0 11.11.2008 22:05
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Inside Dynamics AX 4.0: Usage Scenarios Blog bot DAX Blogs 0 04.10.2007 05:15
Сергей Герасимов: Что нового в Microsoft Dynamics AX 4.0 Blog bot DAX Blogs 0 16.01.2007 11:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:53.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.