此用户表单的潜在安全问题

时间:2015-08-20 18:54:54

标签: php mysql mysqli xss sql-injection

我正在尝试创建一个安全的注册表单,这只是前几个字段中的另外十几个字段,但这些字段无关紧要。我有点安全性很好,我想知道以下代码是否足以防止XSS和SQL注入。

  • 我正在使用htmlentities,因为如果有任何条目错误,我会将一些用户输入显示回用户。
  • 我相信我已正确使用预备陈述。
  • 我已经将表单的开头包含在内,以表明我需要发布自我效果。

    {{1}}

1 个答案:

答案 0 :(得分:6)

<强> 1。感谢使用准备好的陈述!

<强> 2。请阅读以下

总的来说,从安全的角度来看,这看起来相当不错,但你肯定会在任何地方使用htmlentities()来解决问题。

根据您的逻辑,如果我想使用ThisIsSo<Secu>r之类的密码,那么您的代码会将其转换为ThisIsSo&lt;Secu&gt;r,因此我无法登录您的网站,除非您也在登录页面上使用htmlentities()用户名/密码。

将用户数据保存到数据库时,应始终保持用户键入内容的完整性,并在回显数据时实现正确的转义。这个例外就像CKEditor;但编辑负责为你逃跑。

为了更好地说明这一点,您需要使用htmlentities(),如下所示:

<div class="welcome-banner">Welcome <?php echo htmlentities($row['firstname']); ?>!</div>

或者像这样:

<h3>Editing Your Profile</h3>
<label>First Name</label><br>
<input type="text" name="firstname" value="<?php echo htmlentities($row['firstname']); ?>">