【问题标题】:How do I make <textarea> recognize apostrophes as text only? [closed]如何使 <textarea> 仅将撇号识别为文本? [关闭]
【发布时间】:2015-09-22 12:16:39
【问题描述】:

很简单,我网站上的“texarea”就像发短信一样,它允许用户输入文本并将其发布到页面上。我刚刚发现它将文本视为某种代码,可能是 SQL。

当我输入“你好,我们都很好”时,“我们是”这个词中的撇号引起了一些混乱。

浏览器中显示的错误信息:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 're all set')' at line 1

以防万一您想知道,这里是 html:

<form action="comi.php" method="post">
        <textarea maxlength="227" type="text" name="input" cols="45" rows="4"></textarea>
        <input type="submit" value="POST" id="button" />
</form>

我认为可能与数据库有关,有人可以帮忙吗?

提前致谢:)

【问题讨论】:

  • 对不起,第一行应该说:“很简单,我网站上的
  • 我还是不明白,我以为有一个简单的解决方案
  • 解决方法是不要在SQL语句中使用任何用户输入而不进行转义。这必须在服务器端完成,因为您不能信任客户端。见bobby-tables.com。问题不仅在于 SQL 语句,还在于来自用户的所有内容。我建议您在开始任何严肃的 Web 开发之前了解各种攻击,例如 XSS、CSRF、SQL 注入……否则您的服务器和客户端都处于危险之中。
  • 啊,小希特勒认为这不是一个好问题。在我(和其他人一样)看来,它是可验证的,确实包含足够的信息,并且期望的行为是显而易见的......不要失败! :-)

标签: php html sql forms


【解决方案1】:

为了防止 SQL 注入,您应该使用Stored Procedures

CREATE PROCEDURE saveText
    @textArea nvarchar(50)
AS 
SET NOCOUNT ON;

INSERT INTO myTable 
    (textArea)
VALUES
    (@textArea)

这样,当您的输入中有 ' 时,您不会有任何问题。

【讨论】:

    【解决方案2】:

    您需要对您输入的字符串进行转义,以免 sql 引擎混淆。

    $input = $_POST["textarea"];
    $safe_input = mysql_real_escape_string($input);
    

    你需要在你的 sql 语句中使用这个。

    警告

    正如其他人试图告诉您的那样,您让自己容易受到 sql 注入 攻击。完成上述工作后,您应该阅读它。上面的cmets中有一个链接。

    【讨论】:

      【解决方案3】:

      $input = $_POST["textarea"]; $safe_input = 添加斜杠($input);

      【讨论】:

      • 不不不,这不会保护任何东西
      猜你喜欢
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 2018-05-27
      • 1970-01-01
      • 2015-06-29
      相关资源
      最近更新 更多