2011-02-06 40 views
1

有人能给我一份我需要注意的事情清单吗?到目前为止,我只听说过SQL注入和特殊字符。网站:用户将文本输入到字段中 - 我必须注意什么?

那里还有什么,以及我需要采取哪些预防措施?为了更具体一点,我使用AJAX和PHP作为我的服务器端语言,MySQL使用我的数据库系统。

谢谢。

+1

你真的应该阅读代码完成作为一个新的程序员。它会给你一些关于这个话题的很好的建议。另外,请阅读这篇文章http:// www。joelonsoftware.com/articles/Wrong.html的一些伟大的提示。 – jcolebrand 2011-02-06 01:49:17

回答

0

我不知道这是否回答你的问题,或者如果这是你正在寻找的答案,但我通常将所发布的变量传递给mysql_real_escape_string,它会转义所有特殊字符并防止注入。

1

首先,与数据库交谈:

您需要使用一种机制,防止SQL injection attacks通过输入到数据库;最可靠的机制是每当接受任何类型的用户提供的输入时总是使用parameterized queries

其次,将数据返回给用户:

无论何时从数据库中检索用户提供的数据,并将其打印到用户,必须escape all HTML elements以防止用户注入CSRFXSS或类似的攻击给其他观众。

1

用户输入文本字段 - 我有什么需要注意的?

绝对没有!接受来自用户输入的任何和所有信息没有问题。

问题是你如何处理这个输入。一些想法:

  1. 连接用户输入以形成SQL查询可能会导致SQL injection
  2. 将用户输入应用于固定长度的缓冲区可导致buffer overflows
  3. 将用户输入返回到HTML页面可能导致cross site scripting
  4. 用作服务器上运行命令的一部分的用户输入可能会导致arbitrary command execution
  5. ...

你看,是绝对没有,你需要关心用户的输入。相反,你需要确保用户输入不能被“注入”到你的服务器上做SQL,缓冲,HTML或命令执行。另外,您需要确保用户输入实际上符合您后端的类型规范(即,人们可以轻松地操纵输入以将任何内容发送回服务器,这可能会导致在后端生成异常) 。最后,用户可以频繁操作参数来欺骗自己的身份,如果你不善链接客户端请求到后端授权的交易。

+0

+1特别感谢包括任意命令执行,我忘记了一些应用程序严重依赖于外部命令。 – sarnold 2011-02-06 09:20:33

相关问题