2013-04-19 3 views
0

Это мой код, как я могу запретить людям вводить HTML или что-то в этом поле в поле комментариев и имени? Я читал кое-что о HTML сущностей и вскрышных тегов, но я понятия не имею, вообще, как это сделать :(Как защитить свой код от вставки HTML?

<?php 
error_reporting (E_ALL^E_NOTICE); 
require('connect.php'); 
$name=$_POST['name']; 
$comment=$_POST['comment']; 
$submit=$_POST['submit']; 
if($submit) 
{ 
    if($name&&$comment) 
    { 
    $query=mysql_query("INSERT INTO comment (id,name,comment) VALUES ('','$name','$comment')"); 
    header("Location: success.php"); 
    } 
    else 
    { 
     echo "Please fill out all the fields."; 
    } 
} 
?> 
<html> 
<head> 
<title>Family Travels - Lanzarote</title> 
     <link rel="stylesheet" href="layout2.css" title="style1" media="screen" /> 
</head> 

<body> 

<div id="title"> 

<img src="images/banner.png" alt="Title"> 

</div> <!-- title --> 
<div id="container"> 

<div id="content"> 
<h2>Share your experience:</h2> 

<form action="comment.php" method="POST"> 
<label>Name: </label><br /><input type="text" name="name" value="<?php echo "$name" ?>" /><br /><br /> 
<label>Comment: </label><br /><textarea style="width:350px;height:130px" name="comment" cols="25" rows="7"></textarea><br /><br /><br /> 
<input type="submit" name="submit" value="Comment" /><br /> 
<div style="height:600px;width:500px;overflow:auto;white-space:pre-line;word-wrap:break-word;"> 
</form> 
<hr width="500px" size="3px" /> 

<?php 
require('connect.php'); 
$query=mysql_query("SELECT * FROM comment ORDER BY id DESC"); 
while($rows=mysql_fetch_assoc($query)) 
    { 
    $id=$rows['id']; 
    $dname=$rows['name']; 
    $dcomment=$rows['comment']; 
    $linkdel="<a href=\"delete.php?id=" . $rows['id'] . "\">Delete Comment</a>"; 
    echo '<font color="white">Name:</font> ' . $dname . '<br />' . '<br />' . '<font color="white">Comment:</font> ' . '<br />' . '<br />' . $dcomment . '<br />' . '<br />' . $linkdel . '<br />' . '<br />' . 
    '<hr size="3px" width="500px" />' ; 

    } 
?> 
</div> 
</div> <!-- content -->  
+0

'strip_tags()' php function .. –

+3

В дополнение к проблеме XSS, о которой вы спрашиваете, вы используете [** устаревший ** API баз данных] (http : //stackoverflow.com/q/12859942/19068) и должен использовать [современную замену] (http://php.net/manual/en/mysqlinfo.api.choosing.php). Вы также уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, что современный API упростит [защиту] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php). – Quentin

+0

Я знаю, что это устарело, но это просто школьное задание, это не серьезный сайт или что-то в этом роде. – user2298880

ответ

0

я думаю, что вы ищете функции strip_tags()

http://php.net/manual/en/function.strip-tags.php

он удалит все теги html и php из строки

+2

'strip_tags' даже не приближается к обеспечению надежной защиты XSS. – Jon

+0

Что относительно 'htmlentities'? http://php.net/manual/en/function.htmlentities.php это безопасно? – x4rf41

+0

'htmlentities' никогда не следует использовать в этом контексте. 'htmlspecialchars' очень похож и правильная функция для использования, но он охватывает только некоторые векторы атаки XSS. В принятом ответе на связанный вопрос содержится дополнительная информация. – Jon