Mysql - установите флажок Ограничение, чтобы ограничить код HTML или разрешить использование только цифр, алфавитов, пробелов и дефисов в столбце таблицы - PullRequest
0 голосов
/ 16 января 2019

Моя основная проблема заключается в том, что когда кто-то копирует текст вставки из Интернета, например, целую ячейку из листа Google, эту строку отправляют в базу данных mysql <style type="text/css"><!--td {border: 1px solid #ccc;}br {mso-data-placement:same-cell;}--></style><span style="font-size: 10pt; font-family: Arial;" data-sheets-value="{

после перезагрузки этого кода изменяют структуру моей таблицы HTML на странице

Я пытаюсь создать Проверочное ограничение, чтобы разрешить в этом столбце только числа, алфавиты, пробелы и дефисы, а также все другие специальные символы (~! @ # $% ^ & * () + {[}] :; '"\ |?> <) необходимо игнорировать или удалять при обновлении строки </p>

Я пробовал приведенный ниже код, но не смог помешать HTML-коду войти в базу данных

ALTER TABLE Table_Name 
ADD CONSTRAINT ck_No_Special_Characters 
       CHECK (Column_Name NOT LIKE '%[^A-Z0-9]%') 

Если у вас нет контроля над вводом формыокно, как я могу решить эту проблему в MySQL?

1 Ответ

0 голосов
/ 16 января 2019

Вы никогда не можете контролировать поле ввода формы. Если вы когда-либо предполагали это, переосмыслите эти решения, потому что: Вы никогда не можете доверять данным от / клиента . По крайней мере половина сотрудников StackOverflow знают, как манипулировать вашими формами, однако мы не можем изменить код вашего сервера.

То, что вы хотите, - это дезинфекция, прежде чем вводить ее в базу данных Вы можете либо очистить его и вставить его, либо проверить, если он чистый, если не выдает ошибку. Я сделал быстрый пример на PHP:

$cleanVariable = preg_replace("/[^A-Z0-9]/s", '', $variable);

// OR:

if( !preg_match("/^[A-Z0-9]$/s", $variable) ){
    throw new Exception("does not match");
}

И вы можете использовать strtoupper (), чтобы всегда делать его прописными.


После того, как вы сделали на стороне сервера, вы можете сделать клиентскую сторону более привлекательной для пользователя .

<!-- Inline isnt preferred, but for demo: -->
<input onChange="cleanThisInput(this.value)" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...