相关疑难解决方法(0)

PHP:在单个查询中更新多个MySQL字段

我基本上只是尝试更新表中的多个值.最好的方法是什么?这是当前的代码:

$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)

谢谢!

php mysql sql sql-update

17
推荐指数
2
解决办法
13万
查看次数

防御mysql注入和跨站点脚本的最佳方法

目前,我采用了"把所有东西扔在墙上,看看有什么方法"来阻止上述问题.以下是我拼凑在一起的功能:

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 sql security xss

15
推荐指数
2
解决办法
1万
查看次数

用于防止SQL注入和XSS的PHP函数

我想让我的PHP尽可能安全,我想避免的两个主要问题是

  • mySQL注射
  • 跨边脚本(XSS)

这是我针对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 mysql xss sql-injection

14
推荐指数
2
解决办法
4万
查看次数

清理$ _GET参数以避免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 sanitization

13
推荐指数
3
解决办法
4万
查看次数

PHP清理数据

我是编码和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)

php sanitize

13
推荐指数
3
解决办法
4万
查看次数

用于清理Mysql数据库输入的函数

我试图将一个通用功能放在一起,以清理对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 mysql sanitization sql-injection

13
推荐指数
2
解决办法
5万
查看次数

为什么filter_input()不完整?

我目前在基于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开发过程的人可以对此有所了解.

php security

12
推荐指数
1
解决办法
6804
查看次数

使用谷歌翻译API翻译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 google-translate

12
推荐指数
2
解决办法
4万
查看次数

htmlentities()和mysql_real_escape_string()是否足以清除PHP中的用户输入?

我是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

11
推荐指数
2
解决办法
2万
查看次数

什么时候PHP代码应该被视为不安全?

昨天我参加了PHP开发人员职位的采访.我的工作是解决15个问题相当简单的测试.其中一个问题是决定类似下面的代码应被视为不安全.我给了一个错误(事实证明)答案,而另一个人在那次采访中的论证是相当令人惊讶的(至少对我而言).

代码是这样的:

function someFunction($a)
{
    echo $a * 4;
}

someFunction($_GET['value']);
Run Code Online (Sandbox Code Playgroud)

可能的答案是:

  • 总是,
  • 仅在register_globals启用时
  • 决不.

你可以得到一个正确答案的答案,第二个答案就答案选择答案给出了很好的解释(论证).

我的答案是第三:这段代码永远不安全.加论证:因为,这只是一个简单的等式.这里没有文件或数据库操作,没有流,协议,没有任何东西.这只是一个等式.没有其他的.攻击者无法对PHP脚本做任何错误,无论他或她将尝试执行的URL查询格式错误.没有机会.

我得到零分.我的答案都不正确,也没有接受我的论证.正确的答案是:这段代码总是不安全的 - 你应该总是逃避,你从URL查询得到什么.

我的问题是:这是非常好的观点吗?我们是否真的必须始终使用经验法则,如果不以任何其他方式过滤,转义或保护,直接从查询中获取的任何内容都是不安全的?这是否意味着,我教给我的学生一种无法编写的编码方法,因为他们在第一次PHP演讲中编写了一个用于计算三角形区域的脚本,并且他们在任务中使用未经过滤的未经过滤的params?

我理解,安全性和编写安全代码应该是最优先考虑的问题.但是,另一方面,不是一点安全代码法西斯主义(原谅我,如果我冒犯了某人)威胁任何不安全的代码,即使没有人能够对它做任何伤害?

或者也许我完全错了,你可以对与第四次相呼应的功能做一些伤害,你给它的是什么?

php security

10
推荐指数
1
解决办法
817
查看次数