‘壹’ javaweb 中怎样利用hashmap 怎样实现用户不重复注册 (最好有具体实例)
是可以的,顺便B视一下楼上说的要遍历MAP的说法。那样是误导。哈希表的优势是快速定位和查找,缺点就是遍历,所以一般情况下要避免对哈希表进行遍历。
哈希表最重要的原理就是采用键-值对存储。值是对象,键就是给这个对象取个名字。然后存起来。
这种存储是唯一并排它的。 比方说第一次你存了一个对象取个键名为“AAA”,下次你又想存一个对象也取名为“AAA”,那么成功后,原来那个对象将会被新的对象替换。
换言之,表中永远只会有一个以“AAA”命名的对象存在。 新存一个,旧的那个就丢了。
当客户端发来注册请求时,会发过来想要取的名字,后台得到这个名字后从数据库中进行SQL查询利用Like语法,查出所有类似这个名字的所有用户。 这些用户将会以一个集合的形式存在。
你可以将集合转存在于哈希表中, 该哈希表以用户名为键值,以用户本身为对象存在。
Hashtable table = XXX;//你己经得到的用户表
boolean hasContainsName= table.containsKey("youname");
if(hasContainsName == true){
//注册失败,己存在用户
}
‘贰’ 关于webpack替换文件hash的问题,有人有过这方面经验吗
关于webpack替换文件hash的问题,
HRESULTRegisterAppId(boolbService=false)throw();
HRESULTPreMessageLoop(intnShowCmd)throw();
HRESULTPostMessageLoop()throw();
voidOnStop()throw();
voidOnPause()throw();
voidOnContinue()throw();
};
HRESULTCPureSslMole::RegisterAppId(boolbService)throw()
{
HRESULThr=S_OK;
BOOLres=__super::RegisterAppId(bService);
if(bService)
{
if(IsInstalled())
{
‘叁’ Web前端密码加密是否有意义
密码在前端加密完全没有意义,对密码系统的安全性不会有任何提高,反而会引发不必要的麻烦。首先,做前端开发的人需要知道,前端系统的控制权是完全在用户手里的,也就是说,前端做什么事情,用户有完全的控制权。假设如同 @陈轩所说,前端做过了md5,后台就不用做了,这个做法会有什么后果?如果某一天,这个系统的数据库泄露了,黑客就直接拿到了每个用户的密码md5值,但此时,由于黑客知道密码是在前端进行哈希的,所以他不需要爆破出该md5对应的原文是什么,而是直接修改客户端向服务器发出的请求,把密码字段换成数据库中MD5就可以了,由于与数据库中记录一致,直接就会登录成功。这跟直接存储明文密码没有任何区别!!!所以不管前端是不是加密了密码,后台使用安全的哈希算法对内容再次转换是非常有必要的。(MD5可不行,要用bcrypt,我之前回答过一个类似的:随着显卡性能的高速发展,目前的快速Hash算法是否已经变得不够安全了?)这个回答还有一个人赞同,希望大家别被错误答案误导了。另外一个答案 @林鸿所说,在非安全HTTP连接上,可以防止原始密码被窃听。但问题在于由于你的登录系统接受的哈希过的密码,而不是原文,窃听者根本不需要原始密码,只要通过哈希结果就可以伪造请求登录系统。这样做只能防止被窃听到原文的密码被攻击者用在社会学攻击上,而不能改善该网站的安全性。所以不管前端是不是加密了密码,使用HTTPS安全连接进行登录都是非常有必要的。以上我说的两点,合起来看就是:不管前端是否加密了密码,都不能以此为假设,让后端设计的安全等级下降,否则就会有严重的安全问题。实际上,前端进行密码加密,可以看做帮助用户多进行了一次原文的转换,不管用了什么加密算法,算出来的结果都是密码原文,你该如何保护用户的原始密码,就该如何保护此处的加密结果,因为对你的登录系统来说,它们都是密码原文。以上这些,说明了密码加密是没有什么意义的,接下来,我要说明前端加密会带来什么问题。有些人会认为前端进行了加密,可以降低后台的安全性需求,这种错误的观念会造成系统的安全漏洞。实际上,你不能对前端做任何的假设,所有跟安全相关的技术,都必须应用在后台上。前端进行加密会造成页面需要js脚本才能运行,那么假设你的系统需要兼容不能运行js的客户端,就必须再设计一个使用原文的登录接口。由于前端是不是加密,所有安全机制都必须照常应用,所以为系统增加这样的复杂性是完全没必要的,即使传输明文密码,只要正确使用了HTTPS连接和服务器端安全的哈希算法,密码系统都可以是很安全的。
‘肆’ web应用中的注入漏洞主要有哪几种
网络发展至今,他的高端我们都见识过,但是网络安全也是一直以来不变的话题,怎样能使网络更加安全呢?如何构建一个安全的Web环境,是应该考虑的事情。该选择哪些安全工具呢?我们可以再危险发生之前,先测试一下自己系统中的漏洞。为大家推荐10大Web漏洞扫描程序。 1. Nikto 这是一个开源的Web服务器扫描程序,它可以对Web服务器的多种项目进行全面的测试。其扫描项目和插件经常更新并且可以自动更新。Nikto可以在尽可能短的周期内测试你的Web服务器,这在其日志文件中相当明显。不过,如果你想试验一下,它也可以支持 LibWhisker的反IDS方法。不过,并非每一次检查都可以找出一个安全问题,虽然多数情况下是这样的。有一些项目是仅提供信息类型的检查,这种检查可以查找一些并不存在安全漏洞的项目,不过Web管理员或安全工程师们并不知道。 2. Paros proxy 这是一个对Web应用程序的漏洞进行评估的代理程序,即一个基于Java的web代理程序,可以评估Web应用程序的漏洞。它支持动态地编辑/查看 HTTP/HTTPS,从而改变cookies和表单字段等项目。它包括一个Web通信记录程序,Web圈套程序,hash 计算器,还有一个可以测试常见的Web应用程序攻击的扫描器。 3. WebScarab: 它可以分析使用HTTP和HTTPS协议进行通信的应用程序,WebScarab可以用最简单地形式记录它观察的会话,并允许操作人员以各种方式观查会话。如果你需要观察一个基于HTTP(S)应用程序的运行状态,那么WebScarabi就可以满足你这种需要。不管是帮助开发人员调试其它方面的难题,还是允许安全专业人员识别漏洞,它都是一款不错的工具。 4. WebInspect: 这是一款强大的Web应用程序扫描程序。SPI Dynamics的这款应用程序安全评估工具有助于确认Web应用中已知的和未知的漏洞。它还可以检查一个Web服务器是否正确配置,并会尝试一些常见的 Web攻击,如参数注入、跨站脚本、目录遍历攻击等等。 5. Whisker/libwhisker : Libwhisker是一个Perla模块,适合于HTTP测试。它可以针对许多已知的安全漏洞,测试HTTP服务器,特别是检测危险CGI的存在。 Whisker是一个使用libwhisker的扫描程序。 6. Burpsuite: 这是一个可以用于攻击Web应用程序的集成平台。Burp套件允许一个攻击者将人工的和自动的技术结合起来,以列举、分析、攻击Web应用程序,或利用这些程序的漏洞。各种各样的burp工具协同工作,共享信息,并允许将一种工具发现的漏洞形成另外一种工具的基础。 7. Wikto: 可以说这是一个Web服务器评估工具,它可以检查Web服务器中的漏洞,并提供与Nikto一样的很多功能,但增加了许多有趣的功能部分,如后端 miner和紧密的Google集成。它为MS.NET环境编写,但用户需要注册才能下载其二进制文件和源代码。 8. Acunetix Web Vulnerability Scanner : 这是一款商业级的Web漏洞扫描程序,它可以检查Web应用程序中的漏洞,如SQL注入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界面,并且能够创建专业级的Web站点安全审核报告。 9. Watchfire AppScan: 这也是一款商业类的Web漏洞扫描程序。AppScan在应用程序的整个开发周期都提供安全测试,从而测试简化了部件测试和开发早期的安全保证。它可以扫描许多常见的漏洞,如跨站脚本攻击、HTTP响应拆分漏洞、参数篡改、隐式字段处理、后门/调试选项、缓冲区溢出等等。 10. N-Stealth: N-Stealth是一款商业级的Web服务器安全扫描程序。它比一些免费的Web扫描程序,如Whisker/libwhisker、 Nikto等的升级频率更高。还要注意,实际上所有通用的VA工具,如Nessus, ISS Internet Scanner, Retina, SAINT, Sara等都包含Web 扫描部件。N-Stealth主要为Windows平台提供扫描,但并不提供源代码。
‘伍’ Web前端密码加密是否有意义
在前端对密码做一次MD5,看起来是防止明文传输了,事实上只有一种情况下它可以提高用户的安全性,那就是用户在别的网站上也用和你的网站一样的密码。并且在任何情况下都提高不了你自己网站的安全性。前面说的传输过程、内存里、日志里……这些地方没有明文密码,其实都只能保护用户本身的利益,对于自身服务的安全性是没有提高的。因为,既然传输过程不是加密的,那么包随便发,至于发一个abc123,还是发一个,对你的程序没有任何的区别,这时候你的程序都是小绵羊。这个过程可以看做,你的用户都用了32位字符串的密码,如是而已。从事实意义上讲,在所有网站上用同样密码的用户非常多,所以可以勉勉强强的说,这是有一丁丁点的意义的。但即使在前端做了签名,因为hash暴露了,也还是很容易被撞库。但是,对安全性没有提高,就不做了吗?当然要做,因为要应付审计。
‘陆’ 在web前端里什么是hash
1.[hash]是文件的哈希值,用来打版本号的,[chunkhash]是模块的哈希值,同样可以放在模块的文件名中。
2.webpack自带生成hash的功能,可以绑定事件拿到hash对应表。
‘柒’ webpack中的hash和chunkhash的区别
1. hash与chunkhash
首先我们先看一下官方文档对于两者的定义:
[hash] is replaced by the hash of the compilation.
hash代表的是compilation的hash值。
[chunkhash] is replaced by the hash of the chunk.
chunkhash代表的是chunk的hash值。
怎么样,我还挺厉害的吧。如果想知道更多,你可以去后盾人平台多看一些视频。
‘捌’ Shell脚本根据Hash值判断web服务器页面是否被更改
当页面被恶意木马攻击更改后,监控状态脚本并不能检测出异常,但是Web的页面已经存在相当大的安全隐患.所以能不能寻找到一种方法判断自己所负责的Web服务器页面内容是否遭到恶意木马的攻击和修改显得十分重要.通过Hash值的方法可以非常高效的检测到WEB服务器页面的数据内容是否完整,如果页面内容被恶意木马更改,新页面的Hash值是不同于原始的Hash值的,我们就可以以此作为判断的依据!
获取Hash值的方法:
md5sum /var/www/html/index.html
url="Web服务器页面地址"
如 http://127.0.0.1/index.html
date=$(date +"%Y-%m-%d %H:%M:%S")
source_hash="获取到的原始Hash值"
url_hash=$(curl -s $url | md5sum | cut -d ' ' -f1)
if [ "$url_hash" != "$source_hash" ];then
mail -s Hash is changed root@localhost <<- EOF
检测时间为:$date
数据完整性检验失败,Hash值不同,$url,页面数据被更改
请尽快排查异常
EOF
else
cat >> /var/log/http_check.log <<-EOF
$date "$url,数据完整性校验正常"
EOF
fi
chmod +x /check_http_hash.sh
/check_http_hash.sh
cat /var/log/http_check.log
2019-11-23 15:38:55 "http://127.0.0.1/index.html,数据完整性校验正常"
修改/var/www/html/index.html文件的内容,模拟网站页面被更改的情况!
/check_http_hash.sh
检测时间为:2019-11-23 16:00:08
数据完整性检验失败,Hash值不同,http://127.0.0.1/index.html,页面数据被更改
请尽快排查异常
这一个脚本跟上一篇文章的 http服务状态监测脚本 两者相辅相成,也可以考虑把它们两个合并成同一个脚本!并且一同添加到周期性计划任务中!
‘玖’ webpack打包加hash怎么自动更新
不太明白你的意思
首次使用Webpack, 用CLI, 即Command Line Interface
→ 确认是否安装了NodeJS
npm -v
→ 安装 Webpack
npm install webpack -g
→ 创建一个简单的网站
.....webpacktest/
..........app.js
..........index.html
→ 导航到webpacktest所在文件夹
→ 对app.js文件使用webpack
webpack ./app.js bundle.js
→ 我们看到在webpacktest目录下多了一个bundle.js文件
→ 现在,可以在index.html中引用bundle.js文件,而不是app.js文件
■ 在项目中添加配置文件
→ 在项目根目录下创建名称为webpack.config.js文件
当设置好webpack.config.js文件后,每次我们导航到项目,只要使用webpack这一个命令就可以使用各项功能了。
mole.exports = {
entry: "./app.js",
output: {
filename: "bundle.js"
}
}
→ 命令行来到需要Webpack的网站下
→ 直接输入webpack命令
webpack
■ 启用Webpack观察者模式
当webpack.config.js的配置发生变化,如果每次都要手动输入webpack命令来生成js文件的话,显得相对麻烦一些。Webpack为我们提供了观察者模式,启用后,任何的webpack.config.js中的变化将接受观察,自动生成最终的js文件。
→ 命令行来到需要Webpack的网站下
→ 启用观察者模式
webpack --watch
→ 在webpack.config.js中添加watch字段,并设置成true
mole.exports = {
entry: "./app.js",
output: {
filename: "bundle.js"
},
watch: true
}
→ 这样,每次修改保存webpack.config.js中引用文件,bundle.js的文件会自动更新。
■ 安装启用Webpack DevServer
→ 导航到目标网站目录
→ 输入npm命令安装Webpack DevServer
npm install webpack-dev-server -g
→ 输入webpack-dev-server命令
webpack-dev-server
→ 看到大致如下内容
http://localhost:8080/webpack-dev-server
webpack result is served from /
cotent is served from D:\...
Hash:...
Version:webpack1.12.4
Time:94ms
...
webpack: bundle is now VALID.
→ 在浏览器中输入:http://localhost:8080/webpack-dev-server/
同时显示app.js文件中console.log和document.write的内容。
→ 修改webpack.config.js中依赖的文件并保存,浏览器中的内容就会自动更新
→ 如果不想显示console.log内容呢?
→ 在浏览器中输入:http://localhost:8080/
→ 此时,再修改webpack.config.js中依赖的文件并保存,浏览器的内容却不会更新?
→ 再次回到命令行,加入一个inline的flag
webpack-dev-server --inline
→ 此时,如果修改webpack.config.js中依赖的文件并保存,浏览器中的内容就会自动更新了☺
■ Bundling多个文件
→ 在项目下再添加一个login.js文件
console.log('login loaded');
→ app.js中引用login.js文件
require('./login');
document.write("Welcome to Big Hair Concerts!!Baby");
console.log('App loaded');
→ 在浏览器中输入:http://localhost:8080/
可以看到变化。
→ 在项目下再添加一个utils.js文件
console.log('logging from the utils.js file...');
→ 来到webpack.config.js下配置如下:
mole.exports = {
entry: ["./utils","./app.js"],
output: {
filename: "bundle.js"
},
watch: true
}
→ 命令行导航到当前项目下
→ 重新启用Webpack DevServer
webpack-dev-server
→ 在http://localhost:8080/中体现了相应的变化