如何使用密码保护ClickOnce部署的应用程序?我是否必须更改Web的IIS设置或有没有办法以编程方式执行此操作?我正在使用Visual Studio 2005(.NET 2.0).
如果我必须使用Web凭据,是否仍然可以自动更新应用程序?
如果您可以提供一些示例代码或管理IIS的详细说明,那将会很棒.
谢谢!
我在这篇MSDN文章中找到了一个可能的解决方案:ClickOnce Deployment and Security.
如果要控制每个用户可以访问的部署,则不应启用对Web服务器上部署的ClickOnce应用程序的匿名访问.相反,您将允许用户根据用户的身份(使用Windows NT身份验证)访问您已安装的部署.
如果部署到没有Windows NT身份验证的环境,则解决方案可能是尝试使用基于ASP.NET表单的身份验证来对用户进行身份验证.但是,ClickOnce不支持基于表单的身份验证,因为它使用持久性cookie; 这些存在安全风险,因为它们驻留在Internet Explorer缓存中并且可能被黑客入侵.因此,如果要部署ClickOnce应用程序,则不支持除Windows NT身份验证之外的任何身份验证方案.
如果必须将参数传递给ClickOnce应用程序,则会出现额外的安全注意事项.ClickOnce使开发人员能够向通过Web部署的应用程序提供查询字符串.查询字符串采用用于启动应用程序的URL末尾的一系列名称 - 值对的形式:
http://servername.adatum.com/WindowsApp1.application?username=joeuser
默认情况下,禁用查询字符串参数.要启用它们,必须在应用程序的部署清单中设置属性trustUrlParameters.可以从Visual Studio和MageUI.exe设置此值.有关如何启用传递查询字符串的详细步骤,请参见如何:在ClickOnce应用程序中检索查询字符串信息.
您永远不应将通过查询字符串检索的参数传递给数据库或命令行,而不检查参数以确保它们是安全的.不安全的参数包括数据库或命令行转义字符,这些字符可能允许恶意用户操纵您的应用程序执行任意命令.
注意:查询字符串参数是在启动时将参数传递给ClickOnce应用程序的唯一方法.您无法从命令行将参数传递给ClickOnce应用程序.