1

我目前需要开发一个允许用户将信息和图像输入<textarea>然后保存到数据库的网站。这些数据将显示在另一个页面中。

我虽然使用 AJAX 上传文件,然后附加<img><textarea>. 但是这种方式会产生SQL注入安全威胁。

所以我需要一个关于如何实现这一点的建议,但仍然可以摆脱 SQL 注入。

4

2 回答 2

2

When the user uploads an image, just do the following and you will be safe to append the image HTML to the textarea:

  1. Is the user upload a valid JPG/GIF/PNG/x image? (Use image libraries to verify that.)
  2. Rename the image to something "safe" like a CRC32 of its contents + the current time in microseconds so the file name is innocuous.
  3. Put the image with its new name in a location that can be served.
于 2013-05-13T07:56:26.147 回答
1

你会发现你不能使用 ajax 上传文件——你会想找到一个插件。我建议查看https://github.com/blueimp/jQuery-File-Upload/wiki - 尽管它可能有太多功能。甚至还有一个 mvc3 示例!https://github.com/maxpavlov/jQuery-File-Upload.MVC3

上传图片后,我想您可以触发另一个 ajax 事件来检索图片,然后将其显示在文本区域旁边的 div 中。

至于安全问题,有人告诉我,允许用户上传文件本质上是不安全的。有关更多详细信息,请参阅https://github.com/blueimp/jQuery-File-Upload/wiki/Security

对于多余的链接,我深表歉意。此外,如果您要存储许多不经常访问的文件,您可能需要考虑将文件保存到磁盘。IE。将它们写入网络位置并将文件名存储在表中(使用 GUID 将文件保存在磁盘上)。

IE。表用户文件位置

PK | 用户文件名 | 磁盘ID

1..n | 树.jpg | //服务器路径/文件夹/103c-aa34-0ac2-01cd ...

于 2013-05-15T04:58:07.337 回答