月度归档: 2016 年 4 月

  • IIS .NET 程序 操作必须使用一个可更新的查询的解决办法

    操作必须使用一个可更新的查询。
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。

    原因:出现这个问题是因为access数据库没有写入权限导致的。

    解决方法:可以单独给access所在目录增加写入权限,也可以给整个网站目录写入权限

    增加 everyone用户,勾选下面的读取和写入权限(有的电脑需要勾选修改权限),本机直接勾选完全控制也可以

  • IIS 运行 .net 程序 显示 未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序 解决方案

    最近有一个项目Microsoft.Jet.OleDb,主要用于从Excel中导入数据,在调试阶段一直是正常的。但一部署到客户的环境中(Windows Server 2008 R2 + Server 2005 + IIS7)导入数据的功能就出现问题了

    其错误如下:

    System.InvalidOperationException: 未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序。
    在 System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper)
    在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
    在 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
    在 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
    在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
    在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
    在 System.Data.OleDb.OleDbConnection.Open()
    在 ExcelOperation.ImportFromExcel(String fileName, String strSql)
    在 Retiree_ImportData.btnImport_Click(Object sender, EventArgs e)
    在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
    在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
    在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
    在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

    后来了解到客户的操作系统为64位,通过IIS程序池设置中启用32位应用程序选项中设置为True,问题随即解决如下图:

  • php 编译安装 APC 增加模块 图文教程

    今天发现公司的linux服务器里面php居然没有apc模块,下面我们手动增加一下这个模块。我们这里需要确定的是各个文件的位置在哪里,如果不确定,可以使用linux的find命令找一下。

    • 下载最新模块,目前APC已停止更新,直接使用下面命令,进入到APC编译文件夹。

    wget-c http://pecl.php.net/get/APC-3.1.13.tgz;tar xvfz APC-3.1.13.tgz;cd APC-3.1.13

    • 找一下phpize,

    find / -name phpize

    • 用刚才找到的phpize运行一下

    phpize

    • 开始编译:

    ./configure –with-php-config=/usr/local/php5/bin/php-config –enable-apc –enable-mmap;make;make install

    如果顺利的话,apo.so 会顺利的复制到对应的模块文件里。

    • 修改php.ini,添加语句extension=apc.so。这是让php自动加载扩展库。[APC]
      extension = “apc.so”
      apc.enabled = 1
      apc.shm_size = 256M
      apc.ttl = 3600
      apc.user_ttl = 3600
      apc.mmp_file_mask = /tmp/apc.XXXXXX
      apc.num_files_hint = 0

    重启php-fpm进程,即可。

  • PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置代码实例

    <?php
    /**
    ?*?获取用户真实?IP
    ?*/
    function?getIP()
    {
    ????static?$realip;
    ????if?(isset($_SERVER)){
    ????????if?(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
    ????????????$realip?=?$_SERVER["HTTP_X_FORWARDED_FOR"];
    ????????}?else?if?(isset($_SERVER["HTTP_CLIENT_IP"]))?{
    ????????????$realip?=?$_SERVER["HTTP_CLIENT_IP"];
    ????????}?else?{
    ????????????$realip?=?$_SERVER["REMOTE_ADDR"];
    ????????}
    ????}?else?{
    ????????if?(getenv("HTTP_X_FORWARDED_FOR")){
    ????????????$realip?=?getenv("HTTP_X_FORWARDED_FOR");
    ????????}?else?if?(getenv("HTTP_CLIENT_IP"))?{
    ????????????$realip?=?getenv("HTTP_CLIENT_IP");
    ????????}?else?{
    ????????????$realip?=?getenv("REMOTE_ADDR");
    ????????}
    ????}
    ??
    ??
    ????return?$realip;
    }
    ??
    ??
    /**
    ?*?获取?IP??地理位置
    ?*?淘宝IP接口
    ?*?@Return:?array
    ?*/
    function?getCity($ip)
    {
    $url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
    $ip=json_decode(file_get_contents($url));?
    if((string)$ip->code=='1'){
    ??return?false;
    ??}
    ??$data?=?(array)$ip->data;
    return?$data;?
    }

    获取结果

    123.png

  • nginx 配置站点 支持 http协议 80端口 https协议 443端口同时兼容访问 实例

    最近由于mmsid被封,而没有其他的网盘可以代替,所以想到了上https,这样就可以在线播放magnet协议的视频了。当然这里需要你的nginx支持ngx_http_ssl_module模块,否则会报错。

    申请ssl证书:https://freessl.wosign.com/,全中文网站,具体申请步骤就不细写了。

    下面贴出nginx的具体配置文件:

    server {
     listen 80 default_server; #监听80端口,作为默认网站,即使用ip访问时默认出现的站点
     listen 443 ssl; #同时监听443端口为ssl
     root /v.jiloc.com; #网站根目录地址
     index index.html index.htm index.php;
     server_name v.jiloc.com;
     #配置证书段,证书放在nginx安装目录的sslkey目录下。
     ssl_certificate sslkey/v.jiloc.com_bundle.crt;
     ssl_certificate_key sslkey/v.jiloc.com.key;
     ssl_session_timeout 5m;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:-LOW:!aNULL:!eNULL;
     ssl_prefer_server_ciphers on;
     location / {
     try_files $uri $uri/ /index.php?args;
     if (!-e $request_filename){
     rewrite (.*) /index.php;
     }
     location ~ .*.(bmp|gif|jpg|jpeg|png|swf)$ {#图片防盗链配置段
     valid_referers none blocked *.jjhr.net jjhr.net jiloc.com *.jiloc.com *.22g87.com 22g87.com xianzizhou.com *.xianzizhou.com;
     if ($invalid_referer) {
     return 403;
     }
     expires 10d;
     }
     location ~ .*.(js|css)$ {
     expires 10d;
     }
     }
     include php5-fpm.conf;#php-fpm配置段
     access_log /var/log/nginx/v.jiloc.com.access.log;
    }
  • WordPress pingback DDOS攻击 nginx防护图文教程

    最近老狼的站老是被攻击,最后分析日志后发现是Wordpress 的 pingback 漏洞导致的DDOS攻击,日志如下:

    QQ截图20160407133349

    192.241.x.x – – [07/Apr/2016:12:22:44 +0800] “GET /index.php HTTP/1.0″ 200 “-” “WordPress/3.9.2; http://www.x.x; verifying pingback from 69.30.x.x” “-“

    这里很明显,全部都是Wordpress。下面我们给出防护nginx,apache的防护方案教程(请根据自己的WEB服务器判断是哪一种):

    Nginx:

    在?location / 区块种添加如下代码:

    # WordPress Pingback Request Denial
    if ($http_user_agent ~* “WordPress”) {
    return 403;
    }

    这样的话有请求也不会去找PHP了,nginx及时的返回403,如果连接过多的话需要修改nginx中 worker_connections的参数值,可以把它增加到更大的值。

    Apache:

    在配置文件中添加:

    BrowserMatchNoCase WordPress wordpress_ping
    BrowserMatchNoCase WordPress wordpress_ping
    Order Deny,Allow
    Deny from env=wordpress_ping

    然后reload服务。再观察日志,可以看到全部返回403了。网站也恢复了正常访问。

    QQ截图20160407135309

    如果上面的方法还是无法正常访问那就需要用到iptables了。

    IPTABLES防护:

    cat /var/log/nginx/access.log | grep “verifying pingback from” > pingback_attack.log

    然后用php分析日志,导入到iptables规则中。

    <?php
    error_reporting(0);

    $reqs = file(“pingback_attack.log”);

    foreach ($reqs as $req) {
    $ip = explode(” – – “, $req);
    $ip_address[$ip[0]]++;
    }

    arsort($ip_address);

    foreach ($ip_address as $ip=>$attack_times) {
    print “# WordPress IP. Attacked {$attack_times} times<br />”;
    print “iptables -A INPUT -s {$ip} -j DROP<br />”;
    }

    ?>

    然后将输出的内容执行到iptables规则里面。

  • #网易邮箱52GB# 数据全公开 在用网易邮箱的小伙伴们赶快修改密码吧~

    QQ截图20160406132509
    3.30日晚上21点 微博网友@ringzero 给出了一份所谓的“网易52G库”,称就是去年被泄露的网易163、126邮箱数据,总数据量多达52GB。

     

    并且从截图可以看出 所有密码数据 都是明文。

    该网友称已经开始分析泄漏数据的影响程度,但他也同时明确表示,这份数据的真假尚不清楚,需要研究后再判断,如果是假的或者危害没有那么重,会给网易一个道歉。

    目前发布者@ringzero 爆料博文已经被 新浪加以权限 ?原文已经看不到了 ?且分享的百度云链接也失效了

    4124124

     

    ——————————————————————————–

    3.31日更新 ?目前已知昨晚转存到文件同学 已经无法在次分享这次泄漏的数据库文件

    并且在4.1日00:30分左右 ?百度云官方切断了所有正在下载的文件 ?并且重新连接下载会直接?302 到 wenxintishi.mp4

    20160331093041854

     

    最后,回到本文主题,目前有热心站长针对此数据库制作了相关的查询网站,赶紧快速查询修改密码吧:

    网易52G密码库查询:https://163password.download/

    无论是因为查询量过大,还是相关法律法规问题等因素最终都将会影响网站的正常打开访问查询,因此,需要查询的应该赶紧!

    查询结果分两种:

    如果输入查询的邮箱返回了类似“xxxx@163.com—-12345678”等包含账号和明文密码的结果,很不幸,相关信息已经残遭泄露。

    如果输入查询的邮箱返回了的是“未找到”或者“xxxx@163.com—-”等不包含密码的结果,恭喜,相关信息并没有在数据中出现泄漏,但是账号安全问题仍不容忽视!

    在用网易邮箱的小伙伴们赶紧重新修改密码吧~

WeChat