Определяя общие периодические формы сигнала (квадрат, синус, зуб пилы, …)

Подготовленные операторы / параметризированные запросы вообще достаточны для предотвращения 1-я инжекция порядка на том операторе * глоток>. При использовании неконтролируемого динамического sql где-нибудь еще в приложении, Вы все еще уязвимы для 2-я инжекция порядка .

2-е данные средств инжекции порядка были циклически повторены через базу данных, однажды включаемую в запрос, и намного более тверды осуществить. AFAIK, Вы почти никогда не видите реальные спроектированные 2-е нападения порядка, поскольку это обычно легче для взломщиков социальному инженеру их путь в, но у Вас иногда есть 2-е ошибки порядка, неожиданно возникают из-за дополнительного, мягкого ' символы или подобный.

можно выполнить 2-е нападение инжекции порядка, когда можно заставить значение быть сохраненным в базе данных, которая позже используется в качестве литерала в запросе. Как пример, скажем, Вы вводите следующую информацию как свое новое имя пользователя при создании учетной записи на веб-сайте (принимающий MySQL DB для этого вопроса):

' + (SELECT UserName + '_' + Password FROM Users LIMIT 1) + '

, Если бы нет никаких других ограничений на имя пользователя, подготовленный оператор все еще удостоверился бы, что вышеупомянутый встроенный запрос не выполняется во время вставки и хранит значение правильно в базе данных. Однако вообразите это позже, приложение получает Ваше имя пользователя от базы данных и использует конкатенацию строк для включения того значения новый запрос. Вы могли бы добраться для наблюдения чужого пароля. Так как первые несколько имен в пользовательской таблице имеют тенденцию быть администраторами, Вы, возможно, также просто отдали ферму. (Также отметьте: это - еще одна причина не сохранить пароли в простом тексте!)

Мы видим, тогда, что подготовленные операторы достаточно для единого запроса, но собой они не достаточны для защиты от нападений внедрения SQL всюду по целому приложению, потому что им недостает, механизм для осуществления того всего доступа к базе данных в рамках приложения использует безопасный код. Однако используемый в качестве части хорошего проектирования приложений — который может включать методы, такие как обзор кода или статический анализ или использование ORM, слоя данных или уровня служб, который ограничивает динамический sql — подготовленные операторы основной инструмент для решения проблемы Внедрения SQL. , Если Вы следуете за хорошими принципами проектирования приложений, такими, что Ваш доступ к данным разделяется от остальной части Вашей программы, становится легко осуществить или контролировать тот каждый запрос, правильно использует параметризацию. В этом случае внедрение SQL (и первый и второй порядок) полностью предотвращено.

* глоток> оказывается, что MySql/PHP (хорошо, были), просто немой об обработке параметров, когда широкие символы включены, и существует все еще редко случай, обрисованный в общих чертах в другой высоко проголосовавший ответ здесь , который может позволить инжекции уменьшаться посредством параметризированного запроса.

7
задан Community 8 February 2017 в 14:13
поделиться

6 ответов

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

Теперь возьмите один период (приблизительно) сигнала.

Теперь возьмите ДПФ этого сигнала. , и немедленно компенсировать фазовый сдвиг первого бина (первый бин является основным, ваша задача будет проще, если все фазы будут относительными). Теперь нормализуйте все элементы дискретизации, чтобы основная частота имела единичное усиление.

Теперь сравните и сопоставьте остальные элементы дискретизации (представляющие гармоники) с набором предварительно сохраненных форм волны, которые вы хотите проверить. Примите самое близкое и отклоните общее, если оно не соответствует некоторому порогу точности, определяемому измерениями шумового пола.

8
ответ дан 6 December 2019 в 11:51
поделиться

Выполните БПФ, найдите нечетные и четные пики гармоник и сравните скорость, с которой они уменьшаются, с библиотекой общих сигналов .. пиков ... соотношений.

4
ответ дан 6 December 2019 в 11:51
поделиться

Выполните автокорреляцию, чтобы найти основную частоту, измерить среднеквадратичный уровень, найти первое пересечение нуля и затем попытаться вычесть общие формы сигналов на этой частоте, фазе и уровне. Выигрывает тот, кто отменяет лучшее (и больше некоторого порога).

3
ответ дан 6 December 2019 в 11:51
поделиться

вооружитесь дополнительной информацией ...

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

следующая информация получена из этой ссылки о csound.

(*) Пилообразная волна содержит (теоретически) бесконечное количество гармонических составляющих, каждая в соотношении, обратном частичному числу. Таким образом, основная частота (1) имеет амплитуду 1, вторая частичная 1/2, третья 1/3 и n-я 1 / n.

(**) Прямоугольная волна содержит (теоретически) бесконечное число гармонических частиц, но только гармоники с нечетными номерами (1,3,5,7, ...). Амплитуды находятся в отношении, обратном частичному числу, так же, как пилообразные волны. Таким образом, основная частота (1) имеет амплитуду 1, третья частичная 1/3, пятая 1/5 и n-я 1 / n.

0
ответ дан 6 December 2019 в 11:51
поделиться

В этом ответе предполагается отсутствие шума и это простое академическое упражнение.

Во временной области выбирайте разность между выборками сигнала. Постройте гистограмму результатов. Если распределение имеет четко определенный пик (моду) в нуле, это прямоугольная волна. Если распределение имеет четко выраженный пик при положительном значении, это пилообразная форма. Если в распределении есть два четко очерченных пика, отрицательный и положительный, это треугольник. Если распределение широкое и имеет максимум с обеих сторон, это синусоида.

2
ответ дан 6 December 2019 в 11:51
поделиться

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

1) взять 1-секундную выборку входного сигнала (не обязательно быть таким большим, но это упрощает некоторые вещи)

2 ) в течение всей секунды подсчитайте переходы через нуль. на данный момент у вас есть cps (циклы в секунду) и вы знаете частоту осциллятора. (в случае, если это то, что вы хотели знать)

3) теперь возьмите меньший сегмент выборки для работы: возьмите ровно 7 нулевых переходов. (так что теперь ваш рабочий буфер, если его визуализировать, должен выглядеть как одно из графических представлений, которые вы опубликовали с исходным вопросом.) Используйте этот небольшой рабочий буфер для выполнения следующих тестов. (нормализация рабочего буфера в этот момент могла бы облегчить жизнь)

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

5) тест на пилообразную волну: аналогично прямоугольной волне, но за большой дельтой сигнала будет следовать линейная постоянная дельта сигнала.

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

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

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

0
ответ дан 6 December 2019 в 11:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: