Как проверить безопасность Php для полей ввода и обработки ввода? - PullRequest
1 голос
/ 04 июля 2010

Как выполнить проверку безопасности Php для ввода пользовательских полей и обработки пользовательского ввода (пожалуйста, если вы можете решить пример1 + 2)?

Пример1: проверить, если пользователь вставил URL или что-то еще:

<label>url: </label>
<input type="text">

Пример 2: проверить, вставил ли пользователь HTML или что-то еще

<label>paste html: </label>
<textarea></textarea>

спасибо

Ответы [ 4 ]

2 голосов
/ 11 сентября 2012

Следует избегать наиболее частого использования регулярных выражений для проверки входных данных, которые потребляют много ресурсов ЦП. Начиная с PHP 5.2, существует filter_var для электронной почты, URL, ip, string, int, float, sanitize и validate.

// Remove wrong characters   
$myURL = filter_var(FILTER_SANITIZE_URL);

// Notice the ===
// If we were checking integer input and imagine zero was a valid input
// do !filter_var($myNumber , FILTER_VALIDATE_INT) will display "Invalid Number"
if (filter_var($myURL , FILTER_VALIDATE_URL) === FALSE)
    echo "Invalid URL"
else
    echo "Valid URL" 

Если у вас много входных данных, вы можете использовать filter_input_array .

2 голосов
/ 04 июля 2010

Для фильтрации / проверки строк мы используем RegExp , а для фильтрации / проверки html мы используем Расширение DOM

2 голосов
/ 04 июля 2010
1 голос
/ 04 июля 2010

1. Для проверки URL:

$validUrl = strpos($url, "http://") === 0;
if(!$validUrl) $url = "http://".$url;

Когда ссылка возвращается пользователю, используйте htmlentities () .

2. Для проверки кода HTML используйте библиотеку, например http://htmlpurifier.org/.

<?php
require_once 'htmlpurifier/HTMLPurifier.auto.php';

$purifier = new HTMLPurifier();
$clean_html = $purifier->purify($_GET['dirty_html']);
echo $clean_html;
?>

С вводом:

<img src="test.gif" onload="alert('xss')"/>

Результат:

<img src="test.gif" alt="test.gif" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...