kb 18.11.2012 17:43 Azoth

Уже не первый раз сталкиваюсь с тупостью ненавистников ЯП с динамической типизацией, утверждающих, что они небезопасные. Как пример приводят sql-инъекции.

kmp
Recommended by: @4da, @kurkuma
1. Rayslava 18.11.2012 17:43 RAY-DESKTOP

Только статика! Только выведение типов!
А где тебя так угнетают?

2. kbRayslava /1 18.11.2012 17:44 Azoth

было у пропессора в ЖЖ когда-то, а теперь вот http://juick.com/ArtemZ/2130779

3. Rayslavakb /2 18.11.2012 17:44 RAY-DESKTOP

Расскажите ему про FORTH, который управляет всякими космическими аппаратами.

4. kbRayslava /3 18.11.2012 17:45 Azoth

ну, как раз космический корабль взламывать хрен кто будет, как по мне.

5. Rayslavakb /4 18.11.2012 17:45 RAY-DESKTOP

А было бы неплохо. Центрифуги для урана взломали же

6. kbRayslava /5 18.11.2012 17:46 Azoth

:) не слышал о таком

7. Rayslavakb /6 18.11.2012 17:46 RAY-DESKTOP

Ну stuxnet же, ну!
Говорят, ЦРУ нанимало специалистов.

8. gds 18.11.2012 18:45

как один из примеров небезопасности — динамически-типизированные языки обычно имеют всякий там eval, которого обычно не имеют статически-типизированные языки. И вот, этот eval таки опасен.

9. kbgds /8 18.11.2012 18:46

ну детский сад же какой-то (именно с т.з. безопасностей всяких там).

10. Rayslavagds /8 18.11.2012 18:49 RAY-DESKTOP

Ну, это уж совсем пиздец, а не аргумент.

11. gdskb /9 18.11.2012 18:52

статически-типизированные заставляют решать задачи так, чтобы на этот eval не рассчитывать. А этот eval — весьма опасен бывает в плане доступа к имеющемуся окружению. А без расчёта на eval алгоритмы обычно гораздо более "минималистичны", о меньшем надо заботиться.
Наверное, криво сформулировал. Но, как пример, если сделать вычислялку арифметических выражений через eval и через лексер+парсер+эвалуатор, то в последнем случае будет безопаснее. Нельзя будет вычислить '1 + 2 * system("rm -rf /")'.

12. Rayslavagds /11 18.11.2012 18:53 RAY-DESKTOP

Да ты поехавший совсем! Этот eval запрещается сразу и навсегда, если тебе надо сделать евал, то в том же пейтоне, для вас, Козлов, virtualenv придумали! Какой нахуй rm -rf /, что ты несешь, вообще?

13. gdsRayslava /12 18.11.2012 18:58

что надо — то и несу.
Есть разные люди, и кто-то таки использует этот eval "для простоты", чисто потому, что нет нормальных способов решения задачи, например, индуктивных типов данных для парсинга и вычисления выражения, подаваемого на вход извне.
Я видел примеры подобного подхода, когда использовали eval. Авторы кода, конечно, дебилы, но в статически-типизированном такого не вышло бы.

14. Rayslavagds /13 18.11.2012 18:59 RAY-DESKTOP

Ну, блин, если брать в расчет дебилов, то и на plain c можно такой код написать, что всех читающих сойдут с ума.

15. 238328Rayslava /12 18.11.2012 18:59

дваждую, почти нигде eval и релейтед хрень не преподносится как что-то годное, это просто инструмент, который основывается на базовых возможностях — как изменение констов в крестах

16. kbgds /11 18.11.2012 19:00

ну, скажем так, пока у меня лично только наоборот ощущение, что джава-программист (я так понимаю, в обоих ЯП речь идет о людях не думающих, т.к. умный человек в любом ЯП позаботится о валидации и подстановке входных данных) будет делать eval и считать его "безопасным т.к. у меня типизация входных параметров".

17. gdsRayslava /14 18.11.2012 19:01

речь не про код, от чтения которого сходят с ума, а про код, который небезопасен в зависимости от входящих данных.

18. Rayslavagds /17 18.11.2012 19:02 RAY-DESKTOP

strcpy очень небезопасен.

19. gds238328 /15 18.11.2012 19:02

дебилы кормят eval входящими данными. Это — аргумент против динамической типизации, где eval натурально появляется, и за статическую типизацию, где eval сделать == тащить компилятор.

20. gdsRayslava /18 18.11.2012 19:02

поэтому не нужно использовать C.

21. Rayslavagds /20 18.11.2012 19:02 RAY-DESKTOP

Ну-ка, тогда поведай мне, о великий мастер, на чём же надо писать?

22. gdsRayslava /21 18.11.2012 19:03

в зависимости от задачи.

23. Rayslavagds /22 18.11.2012 19:04 RAY-DESKTOP

Микроконтроллер, управляющий климатической установкой. С telnet-интерфейсом.

24. gdsRayslava /23 18.11.2012 19:07

1. мозг есть? Вот и думай, на чём писать.
2. подобная задача — редкость.
3. дсл себе напиши, пёс.

25. 238328 18.11.2012 20:10 14484556681353268813652248

поцоны, чо лучше: бить каждый раз макаку по рукам или научить не делать тупости?

26. 4daRayslava /23 18.11.2012 20:13 BitlBee

linusk + какойнить легковесный scheme.

27. Elemir 18.11.2012 20:36

Можно написать безопасный унитипизированный ЯП, но де факто ты просто заебошишь систему типов и по-другому её назовёшь (самый яркий пример — mixin modules)

28. kbElemir /27 18.11.2012 20:40 Azoth

мои фантазии закончились тем, что это (наименее уёбищно для меня) можно сделать так:
1. запретить выполнять в рантайме sql-запросы, собранные из строк (только запросы специального типа)
2. разрешить создавать элементы этого типа только макросом (или еще как), до выполнения самого приложения (точнее, самого куска кода).

в результате, получим единственный способ параметризировать запрос — засунув параметры в специальное место (которое "сделает хорошо"). и получим запрет делать "where id=" + foo + ";", т.к. создать из этой строки SQLбильный тип данных будет нельзя.

29. kbkb /28 18.11.2012 20:41 Azoth

кстати, пропессор тот же, в том же жж (и ветви обсуждения), как раз сделал нечто на х-ле, что якобы проблему решало, но тогда я х-ль не мог даже минимально читать, потому ничего не понял. надо бы вернуться и перечитать.

30. kbkb /29 18.11.2012 20:47 Azoth

(еще не читал) http://nponeccop.livejournal.com/261537....

31. jabberRayslava /18 18.11.2012 21:08

ртфм уже про н и др.

32. jabbergds /20 18.11.2012 21:09

обосрался

33. gdsjabber /32 18.11.2012 21:10

а теперь обоссысь!

34. jabber238328 /25 18.11.2012 21:12

сделать так чтобы макака не могла делать тупости, очевидно же

35. Rayslava238328 /25 19.11.2012 04:12

Отлично. Подвёл итог дискуссии.

36. Rayslavajabber /31 19.11.2012 04:14

Я-то знаю. Собственно, strncpy и прочие snprintf и использую.
Однако, вон, товарищ не верит.

37. 238328jabber /34 19.11.2012 16:44 39500908841353331834374290

ограничить макаку в возможностях для всех инструментов? ахаха, ох вов

38. jabber238328 /37 20.11.2012 03:15

> ограничить
> макаку
> в возможностях

Do you really want to delete ?