使用 FileUpload 控件,可以为用户提供一种将文件从其计算机发送到服务器的方法。
一、功能
可使用 FileUpload 控件执行下列操作:
·使用户能够上载存储在服务器上的特定位置的文件。
·限制可上载的文件的大小。
·在存储上载的文件之前检查其属性。
二、背景
FileUpload 控件使用户能够上载图片、文本文件或其他文件。FileUpload 控件显示一个文本框,在此用户可以键入希望上载到服务器的文件的名称。该控件还显示一个“浏览”按钮,该按钮显示一个文件导航对话框。(显示的对话框取决于用户计算机的操作系统。) 出于安全方面的考虑,不能将文件名预加载到 FileUpload 控件中。
1、处理上载的文件
当用户已选定要上载的文件并提交页时,该文件将作为请求的一部分上载。文件将被完整地缓存在服务器内存中。文件完成上载后,页代码开始运行。
可以通过下面的方式访问上载的文件:
·作为在 FileUpload 控件的 FileBytes 属性中公开的字节数组。
·作为在 FileContent 属性中公开的流。
·作为 PostedFile 属性中类型 HttpPos ......
示例
第一个示例演示如何创建 FileUpload 控件,该控件将文件保存到代码中指定的路径。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void UploadButton_Click(object sender, EventArgs e)
{
// Specify the path on the server to
// save the uploaded file to.
String savePath = @"c:\temp\uploads\";
// Before attempting to perform operations
// on the file, verify that the FileUpload
// control contains a file.
if (FileUpload1.HasFile)
{
// Get the name of the file to upload.
String fileName = FileUpload1.FileName;
// Append the name ......
做项目也有一段时间了,在程序中也遇到很多安全方面的问题。也该总结一下了。这个项目是一个 CMS 系统。系统是用 ASP.NET 做的。开发的时候发现微软做了很多安全措施,只是有些新手程序员不知道怎么开启。下面我通过几个方面简单介绍:
1:SQL 注入
2:XSS
3:CSRF
4:文件上传
SQL 注入
引起原因:其实现在很多网站中都存在这种问题。就是程序中直接进行 SQL 语句拼接。可能有些读者不太明白。下面通过一个登录时对用户验证来说明:
验证时的 SQL 语句:
登录验证 SQL 语句(原始)
SELECT * from WHERE user = '" + txtUsername.Text + "' AND pwd = '" + txtPwd.Text + "'
这是一段从数据库中查询用户,对用户名,密码验证。
看上去好象没有什么问题,但是实际这里面浅藏着问题,用户名:admin 密码:admin
登录验证 SQL 语句(真实)
SELECT * from WHERE user = 'admin' AND pwd = 'admin'
如果用户和密码正确就可通验证。如果我用户名:asdf' OR ......
HiddenField 控件提供了一种在页面中存储信息但不显示信息的方法。例如,可以在 HiddenField 控件中存储用户首选项设置,以便可以在客户端脚本中读取此设置。若要将信息放入 HiddenField 控件中,请在两次回发之间将其 Value 属性设置为要存储的值。
一、功能
可以使用 HiddenField 控件执行下列操作:
·在页上的隐藏字段中存储数据。
·检测存储在隐藏字段中的数据何时在回发之间发生更改。
二、背景
当浏览器呈现页面时,不会显示 HiddenField 控件中的信息。但可以在客户端脚本中读取和设置此信息。回发页时,HiddenField 控件的内容在服务器代码中可用,该控件包括客户端脚本中所做的任何更改。
说明: 虽然不显示隐藏字段中的信息,但用户可通过查看页面的源来查看此控件的内容。不要在 HiddenField 控件中存储敏感信息,如用户 ID、密码或信用卡信息。
检测已更改的数据:
在将页面回发到服务器之前,可以更改 HiddenField 控件的值。由于使用隐藏字段在服务器代码和客户端脚本之间共享信息,并且客户端脚本已更新了控件的值,因此可能发生上述情况。
为了帮助您检测控件中的数据更改 ......
利用Application对象和Session对象可以统计当前在线用户数量.
注意:
(1)在会话开始和结束时,一定要进行加锁和解锁操作。由于多个用户可以共享Application对象,因此加锁是必要的,这样可以保证在同一时
刻只有一个客户可以修改和存取Application对象的属性。如果加锁后,迟迟不给开锁,会导致用户无法访问Application对象。我们可以使
用对象的Unlock方法来解除锁定。
(2)我们是根据用户建立和退出会话来实现在线人数的增加、减少的,如果用户没有关闭浏览器,而直
接进入其他URL,则这个会话在一定时间内是不会结束的,所以对在线用户的统计存在一定的偏差。当然我们可以在Web.config文件中对会话
Session的失效时间Timeout来设置,默认值为20分钟,最小值为1分钟。
(3)只有在Web.config文件中的sessionstate模式设置为InProc时,才会引发Session_End事件。如果会话模式为StateServer或SQLServer,则不会引发该事件。
实现代码:
我们在网站中添加一个Global.asax全局应用程序文件.
Global.asax
<%@ Application Language="C#" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
/ ......
HyperLink Web 服务器控件可在网页上创建链接,使用户可以在应用程序中的页间移动。
一、背景
使用 HyperLink 控件的主要优点是可以在服务器代码中设置链接属性。例如,您可以根据页面中的条件动态更改链接文本或目标页。
安全说明: 与超链接相关联的 URL 可能会被用户恶意篡改。
使用 HyperLink 控件的另一个优点是,可以使用数据绑定来指定链接的目标 URL(以及必要时与链接一起传递的参数)。典型的示例就是根据产品列表创建 HyperLink 控件。目标 URL 指向用户可以在其中读取有关产品的更多详细信息的页面。
提示: 如果需要创建 HyperLink 数据绑定控件,执行此操作的一种简单方法是将它们添加为这些控件的子级:Repeater、DataList、GridView、FormView 或 DetailsView。
HyperLink 控件可以显示可单击的文本或图像。
与大多数 Web 服务器控件不同,当用户单击 HyperLink 控件时并不会在服务器代码中引发事件。此控件只执行导航。
二、如何:向 Web 窗体页添加 HyperLink Web 服务器控件 (Visual Studio)
您可以向 Web 窗体页添加超链接,方法是在页面上放置 HyperLink Web ......