eval()
интерпретирует строку как код. Причина, по которой так много людей предупреждала вас об использовании этого, заключается в том, что пользователь может использовать это как вариант для запуска кода на компьютере. Если вы импортировали eval(input())
и os
, человек может ввести в input()
os.system('rm -R *')
, который удалит все ваши файлы в вашем домашнем каталоге. (Предположим, что у вас есть система unix). Использование eval()
- это дыра в безопасности. Если вам нужно преобразовать строки в другие форматы, попробуйте использовать те вещи, которые делают это, например int()
.
Are you sure that the controller action being posted to is the one you have the attributes on?
В asp.net 4 вам также необходимо настроить режим проверки в файле web.config.
Установите следующее в качестве дочернего элемента
элемента:
<system.Web>
...
<httpRuntime requestValidationMode="2.0"/>
Asp.Net 4 устанавливает для параметра requestValidationMode значение 4.0
по умолчанию, что указывает системе выполнить проверку запроса перед фазой BeginRequst HTTP-запроса. Проверка будет происходить до того, как система достигнет атрибута действия, сообщающего ей не проверять запрос, что делает атрибут бесполезным. Установка requestValidationMode = "2.0" вернет поведение проверки запроса asp.net 2.0, позволяя атрибуту ValidateInput
работать должным образом.