问题
希望能自动生成toString()方法
解决方案
使用Commons Lang的ReflectionToStringBuilder或ToStringBuiler,配合ToStringBuilder可生成toString()方法
.下面的代码显示了如何使用反射生成器(reflection builder)生成toString()方法.
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
public String toString(){
return ReflectionToStringBuilder.toString(this);
}
让toString()的内容与不断变化的类保持一致,是一项让人心烦又容易遗忘的工作.Commons Lang带有一个非常易用的工具类,
通过反射自动完成这件麻烦事.ToStringBuilder类及其派生类ReflectionToStringBuilder能把原本臃肿的toString()方法
浓缩成一行.更重要的是ReflectionToStringBuilder反映了对象模型未来的变化趋势.
在有限的时间和预算条件下,面对含有上百个实体的对象模型,要保证toString()方法能实时更新几乎就是天方夜谭.如果你的类
拥有含义明确的toString()方法,在诊断程序时将会受益非浅.通过使用ReflectionToStringBuilder类,能确保输出是正确的.
依靠开发者手动维护toString()方法会很不可靠.
在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码。原因是java默认的编码方式为Unicode,而我们的计算机系统编码常常是GBK等编码。需要将系统的编码转换为 java正确识别的编码问题就解决了。
1、native2ascii简介:
native2ascii是sun java sdk提供的一个工具。用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。为什么要进行转码,原因在于程序的国际化。Unicode编码的定义:Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。
2、获取native2ascii:
安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会有一个bin目录,其中native2ascii.exe正是。
3、native2ascii的命令行的命名格式:
native2ascii -[options] [inputfile [outputfile]]
说明:
-[options]:表示命令开关,有两个选项可供选择
-reverse:将Unicode编码转为本地或者指定编码,不指定编码情况下,将转为本地编码。
-encoding encoding_name:转换为指定编码,encoding_name为编码名称。
[inputfile [outputfile]]
inputfile:表示输入文件全名。
outputfile:输出文件名。如果缺少此参数,将输出到控制台。
4、最佳实践: Read the rest of this entry »
#user nobody;
worker_processes 8;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 10240;
}
http {
include mime.types;
default_type application/octet-stream;
#定义日志格式
log_format main '$remote_addr [$time_local] $request '
'$status $body_bytes_sent $request_time'
'"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main; #访问日志
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
#gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml text/html;
gzip_disable "MSIE [1-6] \.";
upstream local{
server 127.0.0.1:8080; #监听本地服务端口
server 10.3.18.190:8080; #监听另外一台机器的服务端口,切换可以试用down参数或者注释
}
server {
listen 80; #nginx本地端口
server_name localhost; #本地服务
#charset koi8-r;
#access_log logs/host.access.log main;
#location / {
# root html;
# index index.html index.htmi;
#}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy request to resin
location / {
proxy_pass http://local;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #后端服务获取用户真正ip
#允许客户端请求的最大的单个文件字节数
client_max_body_size 10m;
#缓冲区代理缓冲用户端请求的最大字节数 可以理解为先保存到本地再传给用户
client_body_buffer_size 128k;
client_body_temp_path /data/client_body_temp;
#跟后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 90;
#后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
proxy_send_timeout 90;
#连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理
proxy_read_timeout 90;
#代理请求缓存区_这个缓存区间会保存用户的头信息以供Nginx进行规则处理_一般只要能保存下头信息即可
proxy_buffer_size 4k;
proxy_buffers 4 32k; #同上 告诉Nginx保存单个用的几个Buffer 最大用多大空间
proxy_busy_buffers_size 64k; #如果系统很忙的时候可以申请更大的proxy_buffers 官方推荐*2
proxy_temp_file_write_size 64k; #proxy缓存临时文件的大小
proxy_temp_path /data/proxy_temp;
}
location /nginx-profiler {
stub_status on;
access_log on;
auth_basic "NginxStatus";
}
}
}
呆在一个产品驱动的公司里,技术是没有地位的,因为技术说了不算话,做好了每人表扬你,做坏了挨骂的时候倒是少不了,这不奇怪,每人每天都在经历着这些,习惯了就好,挨骂完了郁闷几天,然后工作继续。
其实,产品为什么纠结技术呢,我拍着胸脯说我的功能性流程没问题就行了啊,你的数据减低了管我屁事,自己找原因去。都有哪些东西,自己都搞不明白,非得让技术来被黑锅,fuck,其实有些人的头脑实际上也不怎么地,位居高官有啥了不起的,为什么非得扯破脸皮才算完呢。。。。
两站合并,本来就问题多多,多事之秋。
创建用户并授权
GRANT语句的语法看上去像这样:
GRANT privileges (columns)
ON what
TO user IDENTIFIED BY “password”
WITH GRANT OPTION
MySQL 赋予用户权限命令的简单格式可概括为:
grant 权限 on 数据库对象 to 用户
一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。
grant select on testdb.* to common_user@'%'
grant insert on testdb.* to common_user@'%'
grant update on testdb.* to common_user@'%'
grant delete on testdb.* to common_user@'%'
或者,用一条 MySQL 命令来替代:
grant select, insert, update, delete on testdb.* to common_user@'%'
二、grant 数据库开发人员,创建表、索引、视图、存储过程、函数等权限。
Read the rest of this entry »
加班,通宵,6点回到家,一顿天昏地暗的睡觉,醒来后发现都已经下午2点了,这生活过的真是够凄惨的吧,没办法,谁让咱为别人打工呢。
夜里吃烤翅,有点上火,舌头有点疼,喝了2罐的王老吉感觉还是不起作用。下次不能这么瞎吃了,办公室里面热的要死,昏昏沉沉的想睡觉但是又睡不着,挣扎到5点多,打车回家了。
过两天有时间了给倒过来,娃哈哈,中间断了大概一年的时间,看着以前的文字,真的感慨万千。其实在哪个公司都是一样的,都累的跟小猴子一样,这不刚刚过去的周末有事加了2天的班,累。希望过了明天晚上会好点吧。呵呵
作者:Ph4nt0m Security Team
来源:http://www.ph4nt0m.org-a.googlepages.com/PSTZine_0×03_0×06.txt
==Ph4nt0m Security Team==
Issue 0x03, Phile #0x06 of 0x07
|=---------------------------------------------------------------------------=|
|=---------------------=[ 高级PHP应用程序漏洞审核技术 ]=---------------------=|
|=---------------------------------------------------------------------------=|
|=---------------------------------------------------------------------------=|
|=----------------------=[ By www.80vul.com ]=------------------------=|
|=------------------------=[ <www.80vul.com> ]=--------------------------=|
|=---------------------------------------------------------------------------=|
[目录]
1. 前言
2. 传统的代码审计技术
3. PHP版本与应用代码审计
4. 其他的因素与应用代码审计
5. 扩展我们的字典
5.1 变量本身的key
5.2 变量覆盖
5.2.1 遍历初始化变量
5.2.2 parse_str()变量覆盖漏洞
5.2.3 import_request_variables()变量覆盖漏洞
5.2.4 PHP5 Globals
5.3 magic_quotes_gpc与代码安全
5.3.1 什么是magic_quotes_gpc
5.3.2 哪些地方没有魔术引号的保护
5.3.3 变量的编码与解码
5.3.4 二次攻击
5.3.5 魔术引号带来的新的安全问题
5.3.6 变量key与魔术引号
5.4 代码注射
5.4.1 PHP中可能导致代码注射的函数
5.4.2 变量函数与双引号
5.5 PHP自身函数漏洞及缺陷
5.5.1 PHP函数的溢出漏洞
5.5.2 PHP函数的其他漏洞
5.5.3 session_destroy()删除文件漏洞
5.5.4 随机函数
5.6 特殊字符
5.6.1 截断
5.6.1.1 include截断
5.6.1.2 数据截断
5.6.1.3 文件操作里的特殊字符
6. 怎么进一步寻找新的字典
7. DEMO
8. 后话
9. 附录
一、前言
PHP是一种被广泛使用的脚本语言,尤其适合于web开发。具有跨平台,容易学习,功能强
大等特点,据统计全世界有超过34%的网站有php的应用,包括Yahoo、sina、163、sohu等大型
门户网站。而且很多具名的web应用系统(包括bbs,blog,wiki,cms等等)都是使用php开发的,
Discuz、phpwind、phpbb、vbb、wordpress、boblog等等。随着web安全的热点升级,php应
用程序的代码安全问题也逐步兴盛起来,越来越多的安全人员投入到这个领域,越来越多的应
用程序代码漏洞被披露。针对这样一个状况,很多应用程序的官方都成立了安全部门,或者雇
佣安全人员进行代码审计,因此出现了很多自动化商业化的代码审计工具。也就是这样的形
势导致了一个局面:大公司的产品安全系数大大的提高,那些很明显的漏洞基本灭绝了,那些
大家都知道的审计技术都无用武之地了。我们面对很多工具以及大牛扫描过n遍的代码,有很
多的安全人员有点悲观,而有的官方安全人员也非常的放心自己的代码,但是不要忘记了“没
有绝对的安全”,我们应该去寻找新的途径挖掘新的漏洞。本文就给介绍了一些非传统的技术
经验和大家分享。
另外在这里特别说明一下本文里面很多漏洞都是来源于网络上牛人和朋友们的分享,在
这里需要感谢他们,:)
二、传统的代码审计技术
Read the rest of this entry »
李涯没有死。这是个秘密,余则成不知道,站长吴敬中知道,因为这是个阴谋。李涯坠楼后,立刻被秘密送到了天津陆军医院,医生保住了他的命,但是一直昏迷不醒。吴敬中老谋深算,骨子里,他不曾相信任何一个人,从马奎,到陆桥山,再至李涯,虽然他在很多时候说过李涯是精忠报国忠于党国的,至于余则成,从几次与李涯的明争暗斗中,李涯总是在无限接近胜利时功亏一篑,他就知道余则成非等闲之辈,但是在他多次敛财中,余则成都鞍前马后的帮他出谋划策,在这个人还有用的时候,他不愿把余则成看成是共党,即使他有很多疑点,但还没有威胁到自己,也还没到不得不除的时候。所以,李涯每次调查余则成,他都坐山观虎斗。
撤退去台湾时,他已先期安排,将依然昏迷不醒的李涯秘密送到了台湾,医生说李涯求生的欲望很强,醒过来的机会还是有的。走之前,连软带硬的把余则成带上飞机,也是他的精心设计,余则成毕竟帮了他不少,是个人才,若他真是共党,等李涯醒来,事情便有分晓,再杀不迟,否则留在大陆,对保密局的机密知道的太多,留给**,必然后患无穷。 Read the rest of this entry »