规则 1:绝不要信任外部数据或输入 关于Web应用程序安全性,必须认识到的第一件事是不应该信任外部数据.外部数据(outside data) 包括不是由程序员在PHP代码中直接输入的任何数据.在采取措施确保安全之前,来自任何其他来源(比如 GET 变量.表单 POST.数据库.配置文件.会话变量或 cookie)的任何数据都是不可信任的. 例如,下面的数据元素可以被认为是安全的,因为它们是在PHP中设置的. 复制代码 代码如下: <?php $myUsername = 'tmyer'; $arr…
用户输入: 例1.写一个用户输入密码的小程序,流程如下: 1.用户输入自己的用户名 2.打印"Hello+用户名" #!/usr/bin/env python #name = raw_input("What is your name?") #only on python 2.x name = input("What is your name?") print("Hello " + name ) 例2.输入密码时,我们都不希望自…
如果你能正确可靠地识别和过滤输入,你的工作就基本完成了.最后一步是使用一个命名约定或其它可以帮助你正确和可靠地区分已过滤和被污染数据的方 法.我推荐一个比较简单的命名约定,因为它可以同时用在面向过程和面向对象的编程中.我用的命名约定是把所有经过滤的数据放入一个叫$clean的数据 中.你需要用两个重要的步骤来防止被污染数据的注入: 经常初始化$clean为一个空数组. 加入检查及阻止来自外部数据源的变量命名为clean. 实际上,只有初始化是至关紧要的,但是养成这样一个习惯也是很好的:把所有命名…
<?php $filters = array //定义过滤的数组 ( "name" => array ( "filter"=>FILTER_SANITIZE_STRING ), "age" => array ( "filter"=>FILTER_VALIDATE_INT, //下面的option是FILTER_VALIDATE_INT的过滤选项,查手册可以用到, "options&quo…
新建一个test.sh文件 #!/bin/sh echo "1 : For Test" echo "2 : For nohup &" whiletrue do echo -n "please enter the number:" read line echo "$line" if[[ $line ="1"]];then echo "For Test" elif[[ $line =…
/** * 过滤用户输入的基本数据,防止script攻击 * * @access public * @return string */ function compile_str($str) { $arr = array('<' => '<', '>' => '>','"'=>'”',"'"=>'’'); return strtr($str, $arr); }…
摘抄自ThinkPHP /** * 获取变量 支持过滤和默认值 * @param array $data 数据源 * @param string|false $name 字段名 * @param mixed $default 默认值 * @param string|array $filter 过滤函数 * @return mixed */ function input($data = [], $name = '', $default = null, $filter = '') { $name =…
0x00 安全引言 1.传统Web应用与新兴移动应用 (1)传统Web应用:浏览器 HTTP 服务器(2)新兴移动应用:APP HTTP 服务器 从安全角度看,传统Web应用与新兴移动应用没有本质区别 2.Web应用安全的核心问题是什么? 用户提交的数据不可信是Web应用程序核心安全问题 用户可以提交任意输入 例如: √ 请求参数->多次提交或者不提交√ 修改Cookie√ 修改HTTP信息头√ 请求顺序->跳过或者打乱 3.Web应用防御 (1)完善的异常处理(2)监控(3)日志:记录重要业…
“MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第四篇(用户管理功能的实现) 一.前三篇的内容是否对您有帮助呢?如果有的话,请您继续关注这篇吧,这篇主要是实现”用户管理“的功能,多种方式的增删改查,以  及对用户权限的分配,查询的时候,下面左截图中,用户姓名的模糊查询,输入w,包含w的用户名显示在下拉框中,如果数据太多,也可以使用Jquery-EasyUI的CommboGrid,请看下面的右截图.            (1)用户管理的“增删改查”,一个最基本的功能了…
使用 jQuery Ajax 异步登录,并验证用户输入信息(maven) 本篇内容: (1)上一篇是使用同步的请求实现登录,并由 Servlet 决定登陆后下一步做哪些事情,本篇使用 jQuery Ajax 的方式,实现异步登录,登录成功后执行的内容在 js 中定义. (2)在登录之前,在 js 中验证表单中的,用户名是否为空,密码是否为空,密码是否是 6-12 位,登录失败后,返回提示信息. (3)登录成功后,返回用户表的所有信息,以表格形式展示: (4)效果截图: 本篇部分内容看起来和上一篇…