2016-09-03 1 views
-2

Я искал немного в последнее время, но не могу найти безопасную регистрационную форму. Все, что я нахожу, получил комментарии, такие как "open for XSS", или "Open for SQL injections". Я знаю, что означают оба атак и как они сделаны (по крайней мере, в основном, как они это делают), но найти безопасный guid или уже существующую форму сложнее, чем я думал. Лучшее, что я мог найти, было PDO, отлично работало, но в конце автор писал, что его нельзя использовать для больших проектов (не могу найти ссылку извините).С чего начать, когда вы узнаете, как создать безопасную, но простую в обслуживании регистрационную форму PHP?

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

Может ли кто-нибудь опубликовать базовый безопасный скрипт PHP или PDO, который прост в использовании, и дать мне некоторую информацию о том, что я должен или не должен делать?

+0

Этот вопрос явно не по теме в соответствии с определением «что спросить здесь». Он просит рекомендации. – arkascha

+0

У меня есть учебник для [создания полного веб-приложения] (http://ilovephp.jondh.me.uk/). Он не занимается созданием регистрационной формы, но показывает, как бороться с XSS и SQL-инъекцией в контексте приложения PHP/PDO. Создание регистрационной формы поверх этого было бы довольно просто. – halfer

ответ

0

Я бы предложил использовать фреймворк, такой как CodeIgniter или Laravel, чтобы защитить себя от внедрения XSS и SQL. Framework помогает вам с полезной библиотекой, помощниками и соединителем базы данных.
Но в итоге все, что вам нужно сделать, это проверить каждую запись вашего сайта и привязать свои параметры при создании SQL-запросов.
для проверки электронной почты, вы можете использовать адрес электронной фильтр из filter_var:

if(!filter_var($email, FILTER_VALIDATE_EMAIL) === false) { 
    echo("$email is a valid email address"); 
} else { 
    echo("$email is not a valid email address"); 
} 

или просто использовать регулярное выражение:

if(filter_var($string,FILTER_VALIDATE_REGEXP,array("options"=>array("regexp"=>"/((\w)@(\w)\.(\[a-z]{2-4}/")))){ 
    echo 'Valid Email'; 
} else { 
    echo 'invalid email'; 
} 

А потом для вашей базы данных, просто подготовить заявление и связать свои параметры.

$stm = mysqli_prepare('SELECT password FROM user WHERE email = ?') 
$stm->bind_param('s', $email); // s for String 
$stm->execute(); 

Предлагаю перейти на эту тему, вот несколько сайтов.
Official PHP doc on Mysqli
W3School on Mysqli
Official PHP doc on filter_var
W3School on filter_var
regex101 to learn regexp

P.S. regexp для письма, которое я написал, не самый лучший.

+0

Это обеспечивает очень интересное чувство безопасности, если следовать. – arkascha

+0

Совет «использования фреймворка» для борьбы с SQL-инъекцией и XSS нуждается в предостережении: они могут помочь, но невольные пользователи все равно могут добавить эти проблемы безопасности. Лучше понять, как удалить их, а не полагаться на фреймворк. – halfer

+0

Я знаю фреймворк arn't магический, но они по крайней мере помогают немного с простой в использовании библиотекой. Но я согласен, что это не делает для вас работы. – Nicolas

Смежные вопросы