2012-12-12 136 views
0

所以我知道你可以在php中使用$words = htmlspecialchars($_POST['name']); 来转义特殊字符并防止一些html注入。防止html注入

但我实际上遇到麻烦实施它到我的PHP代码。我在阅读时必须先使用它,然后才能向网站的观众展示您正在展示的任何内容,但我已经失去了如何执行此操作的信息。我有点用PHP的初学者。

所以我能够做的SQL注入部分,但这里是我卡在上面的代码的一部分,如上所述。

我试图阻止HTML注入的标题博客和标签

$result= mysql_query("SELECT * FROM Bpost"); 

echo '<div class = "blog" align = "center">'; 
    while($row = mysql_fetch_array($result)) 
     { 

     echo "<div class = 'tname'>"; 
     echo $row['title']; 
     echo '</div>'; 

     echo '<div class = "bpost">'; 
     echo $row['blog']; 
     echo '</div>'; 

     echo '<div class = "tag">'; 
     echo $row['tags']; 
     echo '</div>'; 
     echo '</br>'; 

     } 
echo '</div>'; 

如果你从我的其他的东西需要的示例代码让我知道。对我来说,这似乎是够了。

+3

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – Neal

+0

@Neal你应该写一个bot来做到这一点。 – ceejayoz

+2

@ceejayoz谁说我没有? :-P – Neal

回答

2

只需将echo $row['title'];更改为echo htmlspecialchars($row['title']);(并对所有其他用户生成的数据重复),然后进行设置。

+0

谢谢。我可以相信这其实很简单。 – user1776221

+1

重申:在回应不能保证安全的字符串时总是调用'htmlspecialchars'。如果你的字符串可以包含HTML,那是另一回事了,这是一个更复杂的案例 –

+0

是的,我知道它并不能防范任何事情。这只是我想添加到我的脚本类中的额外功劳项目中的一部分。我们简单地谈到了sql和html注入,我想我可能会把它包含在这个额外的信誉中。项目(尽管它不是必需的),只是为了增加额外收入,并从我的老师那里得到额外的信贷。 – user1776221