【问题标题】:Prevent user closing </textarea> in HTML form防止用户以 HTML 形式关闭 </textarea>
【发布时间】:2013-09-07 05:05:11
【问题描述】:

我有一个由 Python CGI 脚本输出的 HTML 页面,其中包含一个文本区域和一个提交按钮。我想防止用户弄乱 textarea 字段,例如提交恶意代码或任何其他可能破坏脚本的代码。该脚本看起来很简单:

输入您的信息:

如何防止用户输入类似的内容

innocent message.</textarea>randomcode

进入 textarea,关闭 textarea 并在提交时传递一个脚本?那么抓住用户在 textarea 中输入结束标签了吗?

【问题讨论】:

  • 没有足够的代码来诊断你在做什么,以及它有什么问题。您还需要提供您正在使用的服务器端技术。
  • 恶意注入不是这样的

标签: html forms textarea


【解决方案1】:

根据您的描述,以下是图纸:
假设您的服务器端技术是 Python,它派生一个包含表单元素的 HTML 页面。

您想阻止用户输入相应的结束标签;基本上限制用户输入非字母数字字符。

解决方案:让您的 Python 脚本在派生 HTML 表单元素时派生一个 javascript 函数;处理这个的东西:

<script language="javascript">
function fnCheckAlphabets()
{
    if(!((event.keyCode>43 && event.keyCode<47)||(event.keyCode>64 && event.keyCode<123)|| event.keyCode==32 ))
    { return false;  }
}

并在 textarea 的事件处理程序或表单的 onSubmit 上调用它。

您可以根据自己的要求更改键码。

其他方法是在服务器端 Python 获取值并清理这些值,如下所示: 例如

user = form.getfirst("user", "").upper()    # This way it's safe.

您可以替换不需要的字符,而不是使用大写。

参考:http://docs.python.org/2/library/cgi.html

干杯!

【讨论】:

    【解决方案2】:

    没有必要捕获结束标记,除非您打算以一种导致其被解析为 HTML 的方式处理用户输入。如果你在做这样的事情,你会遇到比关闭标签更大的问题。

    Textarea 输入默认为纯文本,纯文本是你的 CGI 脚本得到的,所以这只是一个不要乱用它的问题,以便将它提供给 HTML 解析器。

    特别是,如果您打算将用户数据显示为您自己页面的一部分,那么您当然应该以一种让浏览器将其视为纯文本的方式来执行此操作 - 或者对其进行清理,以便您只传递此类 HTML您希望允许的标签,并将其他标签转换为纯文本或删除它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-30
      • 1970-01-01
      • 2018-01-11
      • 2023-03-24
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多