2012-04-10 47 views
1

我有一个基于用户输入注册用户的脚本。这使用准备好的语句和白名单来防止sql注入。但我很难理解XSS的预防。如果您不输出html,是否需要htmlspecialchars?

据我了解,你只需要防止XSS如果你是输出到HTML页面?这是什么意思???

即时猜测与此注册页面并不适用,因为我不输出HTML的网页?是对的吗?

如果我是为了防止XSS,做我用用htmlspecialchars?

回答

3

通常是正确的,如果您有任何返回的值显示在页面上,或者如果要插入信息到数据库中供以后检索和显示(如用户配置文件信息),您将要使用htmlspecialchars。

对我来说,当我进行用户注册时,如果他们在输入字段中未能输入正确的值,我会重新显示页面并输入它们的值。在这种情况下,我用htmlspecialchars编码。

如果在任何时候,您计划将数据库中的信息重新显示到网页中(如配置文件等所提及的),则应使用htmlspecialchars。

更好的安全比抱歉,我总是说 - 从未信任用户输入

+1

如果您要插入数据以供稍后显示,那么稍后在显示时间时最好使用'htmlspecialchars'。 – Jon 2012-04-10 23:50:52

0

基本上,XSS当你正在服用的用户输入未进行消毒并显示在您的网页发生。

例如:用户输入

<script>alert('hello you are hacked');</script> 

在一个文本框,并在您的网页上显示这是注册像

Hello, $username 

后,这个突然被变成

Hello, <script>alert('hello you are hacked');</script> 

这是一种形式的XSS


之一的effiecient办法,以防止XSS是这样

echo htmlspecialchars($varname, ENT_QUOTES, 'UTF-8'); 
0

据我了解,你只需要防止XSS如果你是 输出HTML到页面上?这是什么意思???

XSS是由服务器向客户端输出HTML(实际上是Javascript)时发生的攻击,当它不意味着这样做时(显然,当HTML是由恶意用户特制和提供的) 。

我猜这个注册页面不适用,因为我是 不输出HTML的网页?是对的吗?

如果您不是输出什么来自用户输入您是安全的。

如果我是为了防止XSS,我使用htmlspecialchars

是的,这就足够了。

相关问题