我基本上只是尝试更新表中的多个值.最好的方法是什么?这是当前的代码:
$postsPerPage = $_POST['postsPerPage'];
$style = $_POST['style'];
mysql_connect ("localhost", "user", "pass") or die ('Error: ' . mysql_error());
mysql_select_db ("db");
mysql_query("UPDATE settings SET postsPerPage = $postsPerPage WHERE id = '1'") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
我想要包括的另一个更新是:
mysql_query("UPDATE settings SET style = $style WHERE id = '1'") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
谢谢!
目前,我采用了"把所有东西扔在墙上,看看有什么方法"来阻止上述问题.以下是我拼凑在一起的功能:
function madSafety($string)
{
$string = mysql_real_escape_string($string);
$string = stripslashes($string);
$string = strip_tags($string);
return $string;
}
Run Code Online (Sandbox Code Playgroud)
但是,我确信有更好的方法可以做到这一点.我正在使用FILTER_ SANITIZE_STRING,这似乎并不完全安全.
我想我在问,你们采用哪种方法,这些方法有多成功?谢谢
我想让我的PHP尽可能安全,我想避免的两个主要问题是
这是我针对mySQL注入的脚本:
function make_safe($variable) {
$variable = mysql_real_escape_string(trim($variable));
return $variable; }
Run Code Online (Sandbox Code Playgroud)
http://www.addedbytes.com/writing-secure-php/writing-secure-php-1/
针对XSS,我发现了这个:
$username = strip_tags($_POST['username']);
Run Code Online (Sandbox Code Playgroud)
现在我想把两者合二为一个函数.这是最好的方法吗?:
function make_safe($variable) {
$variable = strip_tags(mysql_real_escape_string(trim($variable)));
return $variable; }
Run Code Online (Sandbox Code Playgroud)
或者mysql_real_escape_string是否已经阻止了XSS?最后,还有什么我可以添加到此功能,以防止其他形式的黑客攻击?
我有一个php的网站,包括()将内容嵌入到模板中.要加载的页面在get参数中给出,我将".php"添加到参数的末尾并包含该页面.我需要做一些安全检查以避免XSS或其他东西(不是mysql注入,因为我们没有数据库).我想出的是以下内容.
$page = $_GET['page'];
if(!strpos(strtolower($page), 'http') || !strpos($page, '/') ||
!strpos($page, '\\') || !strpos($page, '..')) {
//append ".php" to $page and include the page
Run Code Online (Sandbox Code Playgroud)
我还能做些什么来进一步消毒我的输入吗?
我是编码和PHP的新手,因此我想了解清理表单数据的最佳方法是什么,以避免格式错误的页面,代码注入等.我在下面找到的示例脚本是一个很好的例子吗?
代码最初发布于http://codeassembly.com/How-to-sanitize-your-php-input/
/**
* Sanitize only one variable .
* Returns the variable sanitized according to the desired type or true/false
* for certain data types if the variable does not correspond to the given data type.
*
* NOTE: True/False is returned only for telephone, pin, id_card data types
*
* @param mixed The variable itself
* @param string A string containing the desired variable type
* @return The sanitized variable or true/false
*/
function sanitizeOne($var, $type)
{ …Run Code Online (Sandbox Code Playgroud) 我试图将一个通用功能放在一起,以清理对Mysql数据库的输入.到目前为止,这就是我所拥有的:
function sanitize($input){
if(get_magic_quotes_qpc($input)){
$input = trim($input); // get rid of white space left and right
$input = htmlentities($input); // convert symbols to html entities
return $input;
} else {
$input = htmlentities($input); // convert symbols to html entities
$input = addslashes($input); // server doesn't add slashes, so we will add them to escape ',",\,NULL
$input = mysql_real_escape_string($input); // escapes \x00, \n, \r, \, ', " and \x1a
return $input;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我理解的定义get_magic_quotes_qpc().这是由php服务器设置为自动转义字符而不是需要使用addslashes().
我是否正确地使用过addslashes()并且 …
我目前在基于PHP的CMS上工作很多,虽然我在这里,但我希望将用户输入的所有处理和卫生都移到一个中心位置.(目前,这里是一个$ _REQUEST,那里是$ _GET,等等).
我非常喜欢filter_input(),并希望将它用于基本的卫生设施,但我不清楚这个功能是否真的是生产就绪.例如,文档为$ type命名以下参数
INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV, INPUT_SESSION (not implemented yet) and INPUT_REQUEST (not implemented yet).
该函数自5.2.0以来就存在,为什么还没有实现两个关键元素呢?如果我想从$ _REQUEST获取数据,则必须使用用户提供的注释中的解决方法.有这个特殊原因吗?这个功能还处于某种形式吗?作为处理传入数据的第一个调用,它是否值得信赖?
也许熟悉PHP开发过程的人可以对此有所了解.
google'ing一段时间用PHP翻译谷歌翻译的最佳方式是什么,发现转换URLs或使用Js的方式非常不同但我想只用php(或者用一个非常简单的解决方案JS/JQUery)来做
例:
//hopefully with $from_lan and $to_lan being like 'en','de', .. or similar
function translate($from_lan, $to_lan, $text){
// do
return $translated_text;
}
Run Code Online (Sandbox Code Playgroud)
你能告诉我一个线索吗?或者你已经有了这个功能..
我的意图是它只用于我尚未定义的语言(或我没有定义的键),这就是为什么我想它如此简单,只会暂时...
编辑
感谢您的回复,我们正在尝试这个问题:
function auto_translate($from_lan, $to_lan, $text){
// do
$json = json_decode(file_get_contents('https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' . urlencode($text) . '&langpair=' . $from_lan . '|' . $to_lan));
$translated_text = $json->responseData->translatedText;
return $translated_text;
Run Code Online (Sandbox Code Playgroud)
}
(对于lang的变量有一个额外的'g'...无论如何)
它返回:现在工作:)
我真的不太了解这个功能,所以任何想法为什么都没有点击这个对象?(现在我这样做)
要么:
function auto_translate($from_lan, $to_lan, $text){
// do
// $json = json_decode(file_get_contents('https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=' . urlencode($text) . '&langpair=' . $from_lan . '|' . $to_lan));
// $translated_text = $json['responseData']['translatedText'];
error_reporting(1); …Run Code Online (Sandbox Code Playgroud) 我是PHP的新手,基本上我正在尝试为我的网站创建一个评论系统.我有以下功能:
$ input = $ _POST ['comment'];
function cleanUserInput($ input){$ input = mysql_real_escape_string($ input); $ input = htmlentities($ input); return $ input; }
所以问题是,mysql_real_escape_string是否足以阻止sql注入?并且htmlentities()是否足以阻止用户输入的脚本,html和样式具有实际效果并且只显示为文本?
或者我是否需要在我的函数中添加更多内容才能使输入真正无害?
昨天我参加了PHP开发人员职位的采访.我的工作是解决15个问题相当简单的测试.其中一个问题是决定类似下面的代码应被视为不安全.我给了一个错误(事实证明)答案,而另一个人在那次采访中的论证是相当令人惊讶的(至少对我而言).
代码是这样的:
function someFunction($a)
{
echo $a * 4;
}
someFunction($_GET['value']);
Run Code Online (Sandbox Code Playgroud)
可能的答案是:
register_globals启用时你可以得到一个正确答案的答案,第二个答案就答案选择答案给出了很好的解释(论证).
我的答案是第三:这段代码永远不安全.加论证:因为,这只是一个简单的等式.这里没有文件或数据库操作,没有流,协议,没有任何东西.这只是一个等式.没有其他的.攻击者无法对PHP脚本做任何错误,无论他或她将尝试执行的URL查询格式错误.没有机会.
我得到零分.我的答案都不正确,也没有接受我的论证.正确的答案是:这段代码总是不安全的 - 你应该总是逃避,你从URL查询得到什么.
我的问题是:这是非常好的观点吗?我们是否真的必须始终使用经验法则,如果不以任何其他方式过滤,转义或保护,直接从查询中获取的任何内容都是不安全的?这是否意味着,我教给我的学生一种无法编写的编码方法,因为他们在第一次PHP演讲中编写了一个用于计算三角形区域的脚本,并且他们在任务中使用未经过滤的未经过滤的params?
我理解,安全性和编写安全代码应该是最优先考虑的问题.但是,另一方面,不是一点安全代码法西斯主义(原谅我,如果我冒犯了某人)威胁任何不安全的代码,即使没有人能够对它做任何伤害?
或者也许我完全错了,你可以对与第四次相呼应的功能做一些伤害,你给它的是什么?