webaccess增加操作密码
WEB方式修改域用户账户密码
12,然后返回iisadmpwd目录,打开“SSL设置”,取消“要求SSL(Q)”
,13,勾选上 要求SSL(Q)选项
14、修改域用户密码
打开浏览器,输//servername/iisadmpwd ,输入账户信息及新密码,然后点击“确定”。
由于我们启用了https协议,
https://servername/iisadmpwd 同样可以访问
3,注册Iisadmpwd目录下的IISpwchg.dll文件:
以管理员身份运行命令提示符,输入下面的命令,然后回车
regsvr32 C:Windows\SysWOW64\inetsrv\iisadmpwd\iispwchg.dll
4,配置PasswordChangeFlags属性,来确保密码修改这个功能可用:
2:禁止更改密码
4:禁止密码过期提示
5、配置IIS7
创建自签名证书,回到主页
6,绑定证书
首先确认默认网站(default web site)的https可用,且绑定好证书;
打开Internet信息服务(IIS)管理器。点击 “default web site ”站点,然后点击右侧操作栏的“绑定”
,
7,选,“https”协议,然后点击“编辑”,在ssl证书中选择本机服务器的证书
以管理员身份运行命令提示符,切换到cd目录,输入下面命令,然后回车
cscript.exe adsutil.vbs set w3svc/passwordchangeflags 0
注:设置PasswordChangeFlags属性的值,你可以组合使用
0:默认值,表示用ssl连接来更改密码
1:允许无安全的端口来更改密码,这个对于ssl功能被禁很有用
Advantech WebAccess 快速入门
快速入门 4.1 创建 BEMS 工程的步骤 .........................................................................错误!未定义书签。 4.1.1 BEMS 数据处理方法 ..............................................................................错误!未定义书签。 4.1.2 连接至 WebAccess 工程节点 ................................................................错误!未定义书签。 4.1.3 启动 WebAccess 工程管理 ....................................................................错误!未定义书签。 4.1.4 启动 BEMS 工程管理 ............................................................................错误!未定义书签。 4.1.5 为 BEMS 能源管理组添加成员 ............................................................错误!未定义书签。 4.1.6 下载 BEMS 工程 ....................................................................................错误!未定义书签。 4.2 从 BEMS 工程管理器窗口进入 BEMS VIEWER ...................................错误!未定义书签。 4.3 VIEW 客户端内的 BEMS VIEWER .........................................................错误!未定义书签。 5. 6. 致谢 ................................................................................................................................................. 68 附录 ................................................................................................................................................... 1 研华(中国)有限公司终端用户软件授权协议 ................................................................................ 1 一、定义 ........................................................................................................................................... 1 二、软件授权 ................................................................................................................................... 2 三、知识产权 ................................................................................................................................... 3 四、机密性 ....................................................................................................................................... 3 五、软件副本限制 ........................................................................................................................... 4 六、转让限制 ................................................................................................................................... 4 七、技术支持服务 ........................................................................................................................... 4 八、条款和终止 ............................................................................................................................... 4 九、损害赔偿 ................................................................................................................................... 5 十、有限保证 ................................................................................................................................... 5 十一、不承担责任的声明 ............................................................................................................... 5 十二、补救办法 ............................................................................................................................... 6 十三、责任范围 ............................................................................................................................... 6
web.config的数据库连接字符串进行加密
关于 2.0+ Web.Config加密为了保护版本2.0+中的配置设置,可以使用aspnet_regiis.exe命令行工具来加密和解密Web.config文件配置部分,你可以在"%WINDOWSDIR%\\Framework \version"目录下找到这个工具。
为了加密Web.config文件中的一个节,你可以在这个命令行工具中使用DPAPI机器密钥,方法如下:一、创建和导出,导入RSA密钥容器。
1、创建密钥容器:aspnet_regiis –pc “KeyName” -exp (此处创建的是计算机级密钥容器,其中” KeyName”是你想要创建的密钥容器名称)2、导出密钥容器到.xml文件中(便于以后导入恢复):aspnet_regiis –px “KeyName”KeyName.xml –pri3、通过xml文件导入密钥容器:aspnet_regiis –pi “KeyName” KeyName.xml4、删除密钥容器Chang:aspnet_regiis -pz “KeyName”二、使用密钥容器加密和解密Web.Config1、在你要加密的信息前面指定密钥容器,如下:<configProtectedData><providers><clear /><add name=""type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"keyContainerName="KeyName" useMachineContainer="true"/></providers></configProtectedData>(注: KeyProvider是用户自之义的加密节名称,” KeyName”是你已创建好的密钥容器名称)//需要加密的Web.Config节<connectionStrings><add name="SQLConnString" connectionString="Data Source=yourIP;InitialCatalog=test;User Id=yourID;Password=yourPassword;"providerName="System.Data.SqlClient" /></connectionStrings>并且确保在configuration节的xmlns属性有如下值:<configuration xmlns="/.NetConfiguration/v2.0">2、加密相应的Web.Config节使用aspnet_regiis.exe命令行程序对所需要的Web.config节进行加密,格式如下:aspnet_regiis.exe –pef “ConfigurationName”“PhysicalPath”–prov “KeyProvider”其中:ConfigurationName为需要加密的Web.config节名称,例如“connectionStrings”,PhysicalPath为需要加密的web.config文件所在的物理路径(NOT INCLUDE FIFE NAME),KeyProvider为在web.config文件中添加的加密节名称。
webservice 加密参数
一、概述在当今互联网时代,随着Web服务的普及和应用范围的不断扩大,我们不可避免地会面临有关Web服务安全性的问题。
其中之一就是如何保护Web服务传输中的参数数据,以防止被恶意窃取或篡改。
对于Web服务中的参数加密问题,我们有必要进行深入探讨。
二、Web服务简介Web服务是一种基于Web的应用程序接口(API),通过网络进行通信和交换数据。
它使用标准的面向对象的协议(如SOAP、XML-RPC、REST等)来交换信息和执行操作。
Web服务具有跨评台性和跨语言性等优点,可以与各种不同的系统和技术进行集成和交互,因此被广泛应用于企业系统集成、移动应用开发、大数据处理等领域。
三、Web服务安全性的挑战Web服务作为一种开放式的网络通信协议,存在着一些安全性的挑战,其中包括参数数据的安全传输。
传统的Web服务通常采用明文传输参数数据的方式,这就意味着这些数据可能会被恶意窃取或篡改,从而给系统和数据带来风险和威胁。
四、解决方案:Web服务中的参数加密为了保护Web服务传输中的参数数据,我们可以采取参数加密的方式来加强安全性。
参数加密是指将参数数据使用加密算法进行加密处理,然后在传输过程中进行解密操作,以保证数据的安全传输。
下面将介绍一些常见的Web服务中参数加密的实现方式和方法。
1. HTTPS协议HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版,它通过在HTTP和TCP之间增加一个加密层来保护数据的安全传输。
使用HTTPS协议可以有效地保护Web服务传输中的参数数据,因为它使用SSL/TLS加密算法来对数据进行加密处理,从而避免了数据被恶意窃取的风险。
2. 对称加密算法对称加密算法是指加密和解密使用相同密钥的加密算法。
在Web服务中,我们可以使用对称加密算法(如AES、DES等)对参数数据进行加密处理,然后在传输过程中使用密钥进行解密操作,以保证数据的安全传输。
WEB开发中常见的加密方式有哪些
WEB开发中常见的加密⽅式有哪些今天,我们对信息安全越来越受重视,WEB开发中的各种加密也变得更加重要。
通常跟服务器的交互中,为确保数据传输的安全性,避免被⼈抓包篡改数据,除了 https 的应⽤,还需要对传输数据进⾏加解密。
今天我们来了解下有哪些常见的加密⽅式。
单向散列加密单向散列(hash)加密是指把任意长的输⼊串变化成固定长的输出串,并且由输出串难以得到输⼊串的加密⽅法,这种⽅法称为单项散列加密。
⼴泛应⽤于对敏感数据加密,⽐如⽤户密码,请求参数,⽂件加密等。
我们开发中存储⽤户密码就⽤到了单向散列加密算法。
常见的单向散列加密算法有:MD5SHAMACCRC单向散列加密算法的优点有(以MD5为例):⽅便存储:加密后都是固定⼤⼩(32位)的字符串,能够分配固定⼤⼩的空间存储。
损耗低:加密/加密对于性能的损耗微乎其微。
⽂件加密:只需要32位字符串就能对⼀个巨⼤的⽂件验证其完整性。
不可逆:⼤多数的情况下不可逆,具有良好的安全性。
单向散列加密的缺点就是存在暴⼒破解的可能性,最好通过加盐值的⽅式提⾼安全性,此外可能存在散列冲突。
我们都知道MD5加密也是可以破解的。
对于PHPer来说,不推荐使⽤md5()简单加密,⽽是推荐⼤家使⽤password_hash()对数据加密存储,该函数使⽤⾜够强度的单向散列算法创建密码的哈希(hash),使加密后的数据更加安全可靠。
对于⽤户密码的加密存储和验证⽀持相当好。
⽰例代码://密码加密$password = '123456';$passwordHash = password_hash($password,PASSWORD_DEFAULT,['cost' => 12]);//密码验证if (password_verify($password, $passwordHash)) {//Success} else {//Fail}对称加密同⼀个密钥可以同时⽤作数据的加密和解密,这种⽅法称为对称加密。
HTTPBasicAuth用户及密码加密
登录后才能查看或发表评论立即登录或者逛逛博客园首页
HTTPBasicAuth用 户 及 密 码 加 密
Httpunner HTTPBasicAuth加密
# 第一种方式 auth_token = None def getToken(loginURL, login_client, login_client_pwd, login_user, login_pwd, login_grt_type):
# 第二种方式 def set_hook_basic_auth(request, client, client_pwd):
''' basicAuth 用户及密码 加密 :param request: :param client: :param client_pwd: :return: ''' request['auth'] = HTTPBasicAuth(client, client_pwd)
def alter_response(res): ''' 获取token :param accessToken: :return: ''' if res.json.get('access_token'): res.json['access_token'] = "Bearer " + res.json.get('access_tken if not auth_token:
Windows2019通过网页修改域用户密码
Windows2019通过网页修改域用户密码对于域用户来说,定期修改密码是必须的。
对于没有Exchange 的组织,而且经常出差在外的人员,能及时修改密码就变得很重要了。
在Windows 2003的时候有iisadmpwd可以修改。
但是这个页面在2008的时候取消了。
如果看不到图,请点我。
自从Windows 2012 R2开始又可以通过Remote Desktop的一个组件修改密码了。
这个功能本来是为了让RDP用户修改密码的。
因为如果远程桌面启用了NLA,并且新用户第一次登录时必须修改密码的情况下,用户将无法连接上服务器。
所以,需要用户先修改密码,然后再通过RDP登录。
方法如下:添加Remote Desktop Service角色添加Remote Deskotp Web Access这个Role service。
添加完毕后,会自动在默认网站下生成一个RDWeb的虚拟目录。
选中RDWeb下的Pages,然后点击中间窗口中的Application Settings。
将PasswordChangeEanbled属性改成True.重新启动网站后访问https://serverip/RDWeb/Pages/en-US/password.aspx这个页面就可以修改密码了。
由于这个功能需要HTTPS的访问,请准备好适合的证书。
同样,建议写个default.htm的页面,将默认网站的访问,自动跳转到这个页面上。
可以通过修改C:\Windows\Web\RDWeb\Pages\en-US目录下的password.aspx把一些需要自定义的文字替换掉。
同样images目录里的图标、图片也可以替换成自己想要的。
比如我替换后的页面时这个样子的。
Web开发中【密码加密】详解
Web开发中【密码加密】详解作为⼀名Web开发⼈员,我们经常需要与⽤户的帐号系统打交道,⽽这其中最⼤的挑战就是如何保护⽤户的密码。
经常会看到⽤户账户数据库频繁被⿊,所以我们必须采取⼀些措施来保护⽤户密码,以免导致不必要的数据泄露。
保护密码的最好办法是使⽤加盐密码哈希( salted password hashing)。
重要警告:请放弃编写⾃⼰的密码哈希加密代码的念头!因为这件事太容易搞砸了。
就算你在⼤学学过密码学的知识,也应该遵循这个警告。
所有⼈都要谨记这点:不要⾃⼰写哈希加密算法!存储密码的相关问题已经有了成熟的解决⽅案,就是使⽤,或者在或上的 PHP 、C# 、 Java 和 Ruby 的实现。
在对密码进⾏哈希加密的问题上,⼈们有很多争论和误解,可能是由于⽹络上有⼤量错误信息的原因吧。
对密码哈希加密是⼀件很简单的事,但很多⼈都犯了错。
本⽂将会重点分享如何进⾏正确加密⽤户密码。
⼀、密码哈希是什么?hash("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824hash("hbllo") = 58756879c05c68dfac9866712fad6a93f8146f337a69afe7dd238f3364946366hash("waltz") = c0e81794384491161f1777c232bc6bd9ec38f616560b120fda8e90f383853542哈希算法是⼀种单向函数。
它把任意数量的数据转换为固定长度的“指纹”,⽽且这个过程⽆法逆转。
它们有这样的特性:如果输⼊发⽣了⼀点改变,由此产⽣的哈希值会完全不同(参见上⾯的例⼦)。
这个特性很适合⽤来存储密码。
因为我们需要⼀种不可逆的算法来加密存储的密码,同时保证我们也能够验证⽤户登陆的密码是否正确。
web权限管理流程
web权限管理流程
Web权限管理流程通常包括以下步骤:
1. 访问控制策略制定:定义角色和权限的组织结构,并确定每个角色能够访问的资源和操作。
2. 用户角色分配:将用户分配给不同的角色,以便根据其角色获得相应的权限。
3. 用户认证和授权:验证用户身份并根据其所属角色赋予相应的权限。
4. 用户权限管理:管理用户的权限,包括添加、修改、禁用和删除用户的权限。
5. 资源管理:管理Web应用程序中的资源,包括创建、修改、删除和授权访问资源。
6. 审计和监控:记录和监控用户的行为,以便后续审计和安全性分析。
7. 密码管理:管理用户的密码,包括设置密码策略、强制密码更改和密码重置。
8. 定期审查:定期审查和更新角色和权限,以确保其与业务需求保持一致。
9. 安全漏洞管理:及时修复和更新Web应用程序中的漏洞,以减少潜在的安全风险。
10. 故障排除和支持:处理用户的权限问题和故障,并提供必要的技术支持。
这些步骤可以根据不同组织的需求进行定制和扩展。
教你妙用SSL给IIS也加一把锁WEB安全电脑资料
教你妙用SSL 给IIS也加一把锁WEB平安电脑资料由于NT系统的易维护性,越来越多的中小企业在自己的网站上和内部办公系统上采用它,而且很多都是用默认的IIS来做WEB效劳器使用,一、建立SSL平安机制IIS的身份认证除了匿名访问、根本验证和Windows NT恳求/响应方式外,还有一种平安性更高的认证,就是通过SSL(Security Socket Layer)平安机制使用数字证书。
SSL(加密套接字协议层)位于层和TCP层之间,建立用户与效劳器之间的加密通信,确保所传递信息的平安性。
SSL是工作在公共密钥和私人密钥根底上的,任何用户都可以获得公共密钥来加密数据,但解密数据必需要通过相应的私人密钥。
使用SSL平安机制时,首先客户端与效劳器建立连接,效劳器把它的数字证书与公共密钥一并发送给客户端,客户端随机生成会话密钥,用从效劳器得到的公共密钥对会话密钥进展加密,并把会话密钥在网络上传递给效劳器,而会话密钥只有在效劳器端用私人密钥才能解密,这样,客户端和效劳器端就建立了一个惟一的平安通道。
建立了SSL平安机制后,只有SSL允许的客户才能与SSL允许的Web站点进展通信,并且在使用URL资源定位器时,输入s:// ,而不是,简单的说默认情况下我们所使用的协议是没有任何加密措施的,所有的全部都是以明文形式在网络上传送的,恶意的攻击者可以通过安装监听程序来获得我们和效劳器之间的通讯内容。
这点危害在一些企业内部网络中尤其比较大,对于使用HUB的企业内网来说简直就是没有任何平安可讲因为任何人都可以在一台电脑上看到其别人在网络中的活动,对于使用交换机来组网的网络来说虽然平安威胁性要小很多,但很多时候还是会有平安打破口,比方没有更改交换机的默认用户和口令,被人上去把自己的网络接口设置为侦听口,仍然可以监视整个网络的所有活动。
所以全面加密整个网络传输隧道确实是个很好的平安措施,很可惜的是如今网络上有关于详细给IIS配置SSL的文章并不是很多,我简单的探索了下把我的经历拿出来给大家分享。
web密码重置方法
web密码重置方法
重置Web密码的方法有多种,以下是一些常见的方法:
1. 通过Console口、STelnet或Telnet等方式登录交换机后设置新的Web 登录密码。
2. 如果您使用的是云办公版本或云课堂及以上版本,可以通过将键盘和显示器连接到服务器,在TUI界面中按ctrl+alt+F按钮,选择reset,确认后,即可将WEB密码恢复为admin。
需要注意的是,重置密码的具体操作方法可能会因您使用的软件或设备的不同而有所差异。
如果上述方法无法帮助您重置密码,建议参考相关软件或设备的官方文档或联系技术支持以获取更准确的帮助。
网页加密完全攻略
⽹页加密完全攻略现在专业性的⽹站越来越多,许多⽹友们都在⽹上建⽴起了⾃⼰的⼩家。
不过⾟⾟苦苦制作的⽹页被⼈拿去改头换⾯却是件⾮常痛⼼的事,所以⼤家都想保护⾃⼰独创的作品,为⾃⼰的⽹页上把锁,今天就让我带⼤家了解⼀下如何给我们的⽹页加上⼀把密码锁。
⼀、常⽤JavaScript密码锁1. 了解javascriptJavaScript是⼀种新的⽹页描述语⾔,是由Sun公司以及⽹景Netscape公司开发的,此⼀语⾔可以被嵌⼊HTML的⽂件之中,使⽤它可以让你设计交互性的⽹页内容。
2. javascript特点使⽤javascript⾮常简单,只是⼀⼩段代码,就可以让⽹页发⽣千奇百怪的效果,⽽且使⽤javascript来加密的⽅法是⽹络中加密最常⽤的⽅法。
3. 使⽤javascript加密使⽤javascript加密最简单的结果就是让浏览者不能使⽤⿏标右键,当他点击右键想对图⽚进⾏保存或者复制⽂字的时候就会弹出⼀个警告窗⼝或是弹出收藏夹等。
实现⽅法:(1)利⽤弹出窗⼝封锁⿏标右键将下⾯这段代码放在⽹页HTML代码的<head></head>标志中,就可以实现封锁右键,给⽹页加密。
<script language="javascript">function click() {if (event.button==2) {alert('本站不准使⽤右键,使⽤左键吧!^_^') }}document.onmousedown=click</script>(2)弹出“添加收藏夹”封锁⿏标右键将下⾯这段代码放在⽹页的HTML代码的<head></head>标志中。
实现点击右键出现“添加到收藏夹”选项。
<script language="javascript">function click() {if (event.button==2) {window.external.addFavorite('/,' 51CTO')}}document.onmousedown=click</script>(3)彻底封锁⿏标右键将下⾯这段代码放在⽹页的HTML代码的<head></head>标志中能够实现彻底封锁⿏标右键的效果,由于这个脚本在右键按下时调⽤⼀个函数,所以可以改为很多种类型。
WebAccess工程建立lu
WebAccess建立新工程
启动监控效果
用IE浏览监控;
欢迎界 面,单 击任何 位臵既 可
用户名: admin 密码为空
Thank you
添加窗口小部件通过右边的预览图选择所需的图鼠标放在图例中心变成小手时单击会弹出所含动画列表通过选择确定查看集体单条动画内容webaccess建立新工程小结前面学习了webaccess的基本功能但是在实际工程中一定不能满足用户的需求所有复杂的功能都是在基础上延伸出来的只有把基础熟练掌握了才能发挥自己的潜智创造出复杂的功能
127.0.0.1或 localhost
IIS正常运行时 出现此画面
“实时监控”---进入 所有的工程运行监控 界面;
可下载客 户端插件
WebAccess建立新工程
进入“工程管理”界面
默认用户名为admin、密 码为空,如果建立工程后 定义了管理员密码,则需 要输入正确的密码;
默认admin 密码为空
用按钮修改IO的数值
以常数点为例实现用按钮修改IO点的数值;
在这里“常数点”、“计算点”、“累算点”统称常数点,它相当于全局变量以 保存一些重要的中间数据或用户信息等,在整个工程项目中均可见,并且可以做 到断电保存的功能,方法与IO点类似;
输入正确 的名字
设臵状态
选择参数以 数字量为例
WebAccess建立新工程
再次选中 “切换”对 象
改变“切换”文字的颜色;
根据C2的不 同状态显示 不同颜色
WebAccess建立新工程
使用WEB方式修改域用户密码
首先安装IIS服务器.如何安装我就不讲了,因为实在是太简单了.安装完之后记得到WEB服务扩展启用ASP哟.!!!!嘻嘻,好似多余说的.
接住打开IIS管理器,新建一个站点或虚拟目录,在这里我新建一个虚拟目录:
按下一步完成建立.
然后右击刚才建好的虚拟目录,选择“属性”,切换到“文档”选项。
添加文档:aexp2.asp.
最后点确定完成设置。
现在就可以打开网页来修改用户密码了。
在地址栏打上:http://IP地址/虚拟目录名,回车就可以了。
比如:http://192.168.1.208/hyh
个证书就可以了。
网上很多人都是只讲了上面,导致很多人都做不成功。
接下来,还得设置一下。
安装“远程管理(HTML)”,得到一个证书。
打开administration的属性
选择“服务器证书”
选择“将当前证书导出到一个.pfx文件”
选择路径
输入加密证书用的密码
打开iisadmpwd虚拟目录所在的默认网站的属性
选择“目录安全性“选项卡里面的”服务器证书“
选择“从.prx文件导入证书“
选择刚才导出的证书文件
输入导出证书时输入的证书加密密码
输入SSL端口号
完成之后,就可以承购修改密码了。
到了这里你也许很高兴,终于可以修改密码了!但是你会发现再修改一次就会提示:密码太短,或不满足密码唯一性限制。
嘻嘻,这是为什么呢?原来这是域安全策略的密码策略在作怪,只要在密码策略里面做相应的设置就可以了。
以下是密码策略设置:
好了,全部完成了!hyh制作。
webconfig 加密
web.config 加密[加入收藏] [友好打印?]前面已经讲过在 web.config 中可以存储数据库连接语句(通常存于 <connectionString>),也可以存储 SQL 语句(通常存于<appSettings>),这样在我们的程序中就可以非常方便地调用,特别是 .NET Framework 2.0 中使用声明式数据绑定,更是需要将这些信息存储在web.config 中。
利用明文存储这些敏感信息是不明智的,这就需要加密。
利用 aspnet_regiis 对 web.config 加密C:\WINDOWS\\Framework\v2.0.50727>aspnet_regiis -pef connectionStrin gs E:\wwwroot -prov DataProtectionConfigurationProvider-pef 指定两个参数:这里 connectionStrings 是要进行加密的配置节,如果配置节不是根元素则就指定路径,如:父配置节/子配置节。
这里 E:\wwwroot 是要加密的配置文件所在的物理目录。
-prov 表示使用哪个驱动来加密,一共有两个驱动可选,在类似于C:\WINDOWS\\Framework\v2.0.50727\CONFIG 的位置,我们可以找到machine.config 文件,在其 configProtectedData 配置节,我们可以看到这两个驱动的名称,以及默认的驱动是哪一个。
这两个驱动是 RsaProtectedConfigurationProvider(类名RsaProtectedConfigurationProvider)和 DataProtectionConfigurationProvider(类名DpapiProtectedConfigurationProvider)。
RsaProtectedConfigurationProvider RSA 加密,公钥/私钥均存储在配置文件中,移植方便。
asp.netmvcwebapi实用的接口加密方法
mvcwebapi实⽤的接⼝加密⽅法在很多项⽬中,因为webapi是对外开放的,这个时候,我们就要得考虑接⼝交换数据的安全性。
安全机制也⽐较多,如andriod与webapi 交换数据的时候,可以⾛双向证书⽅法,但是开发成本⽐较⼤,今天我们不打算介绍这⽅⾯的知识,我们说说⼀个较简单也较常见的安全交换机制在这⾥要提醒读者,⽬前所有的加密机制都不是绝对的安全!我们的⽬标是,任何⽤户或者软件获取到我们的webapi接⼝url后⽤来再次访问该地址都是⽆效的!达到这种⽬标的话,我们必须要在url中增加⼀个时间戳,但是仅仅如此还是不够,⽤户可以修改我们的时间戳!因此我们可以对时间戳进⾏MD5加密,但是这样依然不够,⽤户可以直接对我们的时间戳md5的哦,因些需要引⼊⼀个绝对安全的双⽅约定的key,并同时加⼊其它参数进⾏混淆!注意:这个key要在app⾥和我们的webapi⾥各保存相同的⼀份!于是我们约定公式:加密结果=md5(时间戳+随机数+key+post或者get的参数)下⾯我们开始通过上述公式写代码:于由我的环境是 mvc 的,所以重写⼀个加密类ApiSecurityFilter1、获取参数if (request.Headers.Contains("timestamp"))timestamp = HttpUtility.UrlDecode(request.Headers.GetValues("timestamp").FirstOrDefault());if (request.Headers.Contains("nonce"))nonce = HttpUtility.UrlDecode(request.Headers.GetValues("nonce").FirstOrDefault());if (request.Headers.Contains("signature"))signature = HttpUtility.UrlDecode(request.Headers.GetValues("signature").FirstOrDefault());if (string.IsNullOrEmpty(timestamp) || string.IsNullOrEmpty(nonce) || string.IsNullOrEmpty(signature))throw new SecurityException();2、判断时间戳是否超过指定时间double ts = 0;bool timespanvalidate = double.TryParse(timestamp, out ts);bool falg = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds - ts > 60 * 1000;if (falg || (!timespanvalidate))throw new SecurityException();3、POST/DELETE/UPDATE 三种⽅式提取参数case"POST":case"PUT":case"DELETE":Stream stream = HttpContext.Current.Request.InputStream;StreamReader streamReader = new StreamReader(stream);sortedParams = new SortedDictionary<string, string>(new JsonSerializer().Deserialize<Dictionary<string, string>>(new JsonTextReader(streamReader)));break;4、GET ⽅式提取参数case"GET":IDictionary<string, string> parameters = new Dictionary<string, string>();foreach (string key in HttpContext.Current.Request.QueryString){if (!string.IsNullOrEmpty(key)){parameters.Add(key, HttpContext.Current.Request.QueryString[key]);}}sortedParams = new SortedDictionary<string, string>(parameters);break;5、排序上述参数并拼接,形成我们要参与md5的约定公式中的第四个参数StringBuilder query = new StringBuilder();if (sortedParams != null){foreach (var sort in sortedParams.OrderBy(k => k.Key)){if (!string.IsNullOrEmpty(sort.Key)){query.Append(sort.Key).Append(sort.Value);}}data = query.ToString().Replace("", "");}6、开始约定公式计算结果并对⽐传过的结果是否⼀致var md5Staff = Seedwork.Utils.CharHelper.MD5(string.Concat(timestamp + nonce + staffId + data), 32);if (!md5Staff.Equals(signature))throw new SecurityException();完整的代码如下:1public class ApiSecurityFilter : ActionFilterAttribute2 {3public override void OnActionExecuting(HttpActionContext actionContext)4 {5var request = actionContext.Request;67var method = request.Method.Method;8var staffId = "^***********************************$";910string timestamp = string.Empty, nonce = string.Empty, signature = string.Empty;1112if (request.Headers.Contains("timestamp"))13 timestamp = request.Headers.GetValues("timestamp").FirstOrDefault();1415if (request.Headers.Contains("nonce"))16 nonce = request.Headers.GetValues("nonce").FirstOrDefault();1718if (request.Headers.Contains("signature"))19 signature = request.Headers.GetValues("signature").FirstOrDefault();2021if (string.IsNullOrEmpty(timestamp) || string.IsNullOrEmpty(nonce) || string.IsNullOrEmpty(signature))22throw new SecurityException();2324double ts = 0;25bool timespanvalidate = double.TryParse(timestamp, out ts);2627bool falg = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalMilliseconds - ts > 60 * 1000;2829if (falg || (!timespanvalidate))30throw new SecurityException("timeSpanValidate");3132var data = string.Empty;33 IDictionary<string, string> sortedParams = null;3435switch (method.ToUpper())36 {37case"POST":38case"PUT":39case"DELETE":4041 Stream stream = HttpContext.Current.Request.InputStream;42 StreamReader streamReader = new StreamReader(stream);43 sortedParams = new SortedDictionary<string, string>(new JsonSerializer().Deserialize<Dictionary<string, string>>(new JsonTextReader(streamReader))); 4445break;4647case"GET":4849 IDictionary<string, string> parameters = new Dictionary<string, string>();5051foreach (string key in HttpContext.Current.Request.QueryString)52 {53if (!string.IsNullOrEmpty(key))54 {55 parameters.Add(key, HttpContext.Current.Request.QueryString[key]);56 }57 }5859 sortedParams = new SortedDictionary<string, string>(parameters);6061break;6263default:64throw new SecurityException("defaultOptions");65 }6667 StringBuilder query = new StringBuilder();6869if (sortedParams != null)70 {71foreach (var sort in sortedParams.OrderBy(k => k.Key))72 {73if (!string.IsNullOrEmpty(sort.Key))74 {75 query.Append(sort.Key).Append(sort.Value);76 }77 }7879 data = query.ToString().Replace("", "");80 }8182var md5Staff = Seedwork.Utils.CharHelper.MD5(string.Concat(timestamp + nonce + staffId + data), 32);8384if (!md5Staff.Equals(signature))85throw new SecurityException("md5Staff");8687base.OnActionExecuting(actionContext);88 }8990public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) 91 {92base.OnActionExecuted(actionExecutedContext);93 }94 }7、最后在 mvc ⾥加⼊配置上述类public static class WebApiConfig{public static void Register(HttpConfiguration config){// Web API configuration and servicesconfig.Filters.Add(new ApiSecurityFilter());config.Filters.Add(new ApiHandleErrorAttribute());// Web API routesconfig.MapHttpAttributeRoutes();config.Routes.MapHttpRoute(name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new { id = RouteParameter.Optional });}}public class ApiHandleErrorAttribute: ExceptionFilterAttribute{///<summary>/// add by laiyunba///</summary>///<param name="filterContext">context oop</param>public override void OnException(HttpActionExecutedContext filterContext){LoggerFactory.CreateLog().LogError(Messages.error_unmanagederror, filterContext.Exception); }}9、利⽤微信⼩程序测试接⼝var data = {UserName: username,Password: password,Action: 'Mobile',Sms: ''};var timestamp = util.gettimestamp();var nonce = util.getnonce();if (username && password) {wx.request({url: rootUrl + '/api/login',method: "POST",data: data,header: {'content-type': 'application/json','timestamp': timestamp,'nonce': nonce,'signature': util.getMD5Staff(data, timestamp, nonce)},success: function (res) {if (res.data) {1)其中getMD5Staff函数:function getMD5Staff(queryData, timestamp, nonce) {var staffId = getstaffId();//保存的key与webapi同步var data = dictionaryOrderWithData(queryData);return md5.md5(timestamp + nonce + staffId + data);}2)dictionaryOrderWithData函数:function dictionaryOrderWithData(dic) {//eg {x:2,y:3,z:1}var result = "";var sdic = Object.keys(dic).sort(function (a, b) { return a.localeCompare(b) });var value = "";for (var ki in sdic) {if (dic[sdic[ki]] == null) {value = ""}else {value = dic[sdic[ki]];}result += sdic[ki] + value;}return result.replace(/\s/g, "");}10、测试⽇志LaiyunbaApp Error: 2 : 2017-10-18 09:15:25 Unmanaged error in aplication, the exception information is Exception:System.Security.SecurityException: 安全性错误。
WebAccess HMI Designer使用教程
WebAccess HMI Designer使用教程WebAccess HMI Designer是一款功能强大的HMI图形设计软件,旨在为客户提供强大的HMI设计体验。
它专为WebAccess引擎设计,能够非常灵活、便捷的完成HMI的设计。
本文将简单介绍WebAccess HMI Designer的使用教程。
首先,下载并安装WebAccess HMI Designer。
在安装过程中,需要设置WebAccess HMI Designer的语言、配置端口号以及安装联网教程。
安装完成后即可使用。
第二,开始使用WebAccess HMI Designer。
首先进入软件,点击“新建”菜单,可以选择自己需要的HMI设计项目。
在新建的项目中,可以使用简单的拖拽操作,自由灵活的布局模块,比如“文本框”、“图表”、“流程图”等等,还可以添加自己定制的模块,TM外设,满足不同应用需求。
第三,开始给HMI添加事件。
在HMI设计过程中,可以给HMI界面添加各种事件,实现反馈HMI中相关变量的实时监控和控制,使HMI更加智能化。
这里可以使用按钮、开关等控制元件,添加相应的事件,并设置HMI的响应策略,进行变量的实时控制和监控。
第四,开始发布HMI项目。
点击“发布项目”,开始编译转换,将设计的HMI界面发布到WebAccess的管理服务器中,同时也可以发布到其他远程服务器。
最后,可以通过web浏览器访问HMI界面,进行实时监控和操作。
总之,WebAccess HMI Designer为客户提供了强大的HMI设计体验,能够通过HMI,进行实时监控和更容易的操作,让HMI更人性化,也助力于其产品在市场中的销售。
设置文件夹密码的步骤
设置文件夹密码可以保护您的文件不被未经授权的用户访问。
以下是在不同操作系统上设置文件夹密码的一般步骤:Windows系统:1. 右键点击要设置密码的文件夹。
2. 选择“属性”。
3. 点击“安全”标签页。
4. 点击“编辑”。
5. 在“组或用户名称”下,找到您自己或管理员账户。
6. 点击“全权控制”或“读取和执行”等权限,然后点击“继承自父项”旁边的“编辑”。
7. 勾选“允许继承权限自父项”并点击“应用”和“确定”。
8. 返回“安全”标签页,点击“ Advanced ”(高级)。
9. 在“权限”区域,点击“更改拥有者”。
10. 选择一个用户账户,然后点击“应用”和“确定”。
11. 再次点击“高级”,然后点击“权限”。
12. 点击“添加”,然后输入要添加的用户账户。
13. 分配适当的权限,如“读取”、“写入”或“完全控制”。
14. 点击“应用”和“确定”,关闭属性窗口。
请注意,这些步骤可能会因Windows版本的不同而有所变化。
macOS系统:1. 右键点击要设置密码的文件夹。
2. 选择“获取信息”。
3. 点击“共享”标签页。
4. 勾选“允许访问权限”或“完全访问权限”。
5. 点击“共享”菜单中的“添加用户”,然后输入用户账户。
6. 为该用户分配适当的权限。
7. 点击“好”,关闭“获取信息”窗口。
Linux系统:在Linux中,您可以使用`chattr`命令来设置文件或文件夹的只读属性,或者使用`semanage`命令来限制对文件或文件夹的访问。
具体的命令和步骤可能会因Linux发行版和文件系统类型而有所不同。
privateaccess密码设置规则
privateaccess密码设置规则
privateaccess密码设置规则可以根据个人需求和安全要求来制定,但是以下是一些常见的密码设置规则建议:
1. 长度要求:密码长度应该至少包含8个字符,越长越好。
2. 复杂度要求:密码应该包含大小写字母、数字和特殊字符。
3. 避免常用密码:避免使用常见的密码,如"password"、"123456"等。
4. 避免个人信息:不要在密码中使用个人信息,如姓名、生日等。
5. 定期更改密码:建议定期更改密码,如每三个月更换一次。
6. 不重复使用密码:不要在多个账户上使用相同的密码,避免一旦一个账户被攻破,其他账户也会受到威胁。
7. 使用密码管理器:考虑使用密码管理器来存储和生成复杂、独特的密码。
8. 二次验证:启用二次验证功能,提供额外的安全层。
以上规则只是建议,具体的密码设置规则可以根据私密访问需求及安全措施来制定。